Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Problemas con consulta desde VB a access 2003

Estas en el tema de Problemas con consulta desde VB a access 2003 en el foro de Visual Basic clásico en Foros del Web. Estimados. Tengo un problema al comparar una consulta hacia una tabla de acces 2003. Adjunto: Dim con As New ADODB.Connection Dim rs As New ADODB.Recordset ...
  #1 (permalink)  
Antiguo 16/11/2008, 08:42
 
Fecha de Ingreso: agosto-2006
Mensajes: 92
Antigüedad: 17 años, 8 meses
Puntos: 0
Problemas con consulta desde VB a access 2003

Estimados.
Tengo un problema al comparar una consulta hacia una tabla de acces 2003.

Adjunto:

Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim txtsql As String
con.Open ("dsn=bodega")
On Error Resume Next
txtsql = "select * from tb_agendamiento where cod_agend = '" & Text4.Text & "' "

Set rs = con.Execute(txtsql)
If rs.RecordCount > 0 Then
MsgBox "El codigo de agenadmiento (" & Text4.Text & ") ya existe..!"
con.Close

'Exit Sub
Else

txtsql = "INSERT INTO tb_agendamiento (cod_agend,rut_cliente,nom_cliente,dom_cliente,con tacto_cliente,modelo_equipo,simcard,dia_agend,mes_ agend,año_agend,nom_usuario)Values('" & Text4 + "','" & Text6 + "','" & Text1 + "','" & Text3 + "','" & Text5 + "','" + Label9 + "','" + Combo2.Text + "','" + Combo3.Text & "','" + Combo4.Text & "','" + Combo5.Text & "','" + Label22 + "')"
Set rs = con.Execute(txtsql)
End If

El problema no es la conexion, si no que la consulta que al parecer esta mal estructurada. Ya que a la hora de guardar un registro nuevo pero en el cual el codigo de agendamiento es el mismo deberia arrojar el mensaje de que ya existe. En la tabla esta como clave primaria, por no cual no permite duplicidad. Ademas esta en formato texto.
O puede que este mal el formato de condicion en rs.RecordCount?
Que puedo hacer?
Gracias
  #2 (permalink)  
Antiguo 16/11/2008, 09:24
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Problemas con consulta desde VB a access 2003

Cita:
Iniciado por mumo2006 Ver Mensaje
Estimados.
Tengo un problema al comparar una consulta hacia una tabla de acces 2003.

Adjunto:

Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim txtsql As String
con.Open ("dsn=bodega")
On Error Resume Next
txtsql = "select * from tb_agendamiento where cod_agend = '" & Text4.Text & "' "

Set rs = con.Execute(txtsql)
If rs.RecordCount > 0 Then
MsgBox "El codigo de agenadmiento (" & Text4.Text & ") ya existe..!"
con.Close

'Exit Sub
Else

txtsql = "INSERT INTO tb_agendamiento (cod_agend,rut_cliente,nom_cliente,dom_cliente,con tacto_cliente,modelo_equipo,simcard,dia_agend,mes_ agend,año_agend,nom_usuario)Values('" & Text4 + "','" & Text6 + "','" & Text1 + "','" & Text3 + "','" & Text5 + "','" + Label9 + "','" + Combo2.Text + "','" + Combo3.Text & "','" + Combo4.Text & "','" + Combo5.Text & "','" + Label22 + "')"
Set rs = con.Execute(txtsql)
End If

El problema no es la conexion, si no que la consulta que al parecer esta mal estructurada. Ya que a la hora de guardar un registro nuevo pero en el cual el codigo de agendamiento es el mismo deberia arrojar el mensaje de que ya existe. En la tabla esta como clave primaria, por no cual no permite duplicidad. Ademas esta en formato texto.
O puede que este mal el formato de condicion en rs.RecordCount?
Que puedo hacer?
Gracias
Hola, pon el tipo de cursor del lado cliente, sino siempre el valor de RecordCount será -1

Dim rs As New ADODB.Recordset
rs.CursorLocation = adUseClient


y elimina la instrucción con.Close porque dará error al hacer el INSERT si la conexión está cerrada.


  #3 (permalink)  
Antiguo 16/11/2008, 10:29
 
Fecha de Ingreso: agosto-2006
Mensajes: 92
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Problemas con consulta desde VB a access 2003

Cita:
Iniciado por Avellaneda Ver Mensaje
Hola, pon el tipo de cursor del lado cliente, sino siempre el valor de RecordCount será -1

Dim rs As New ADODB.Recordset
rs.CursorLocation = adUseClient


y elimina la instrucción con.Close porque dará error al hacer el INSERT si la conexión está cerrada.


Estimado. Realicé las modificaciones, pero el problema persiste. El problema en si es que cuando ingreso ese codigo de agendamiento a pesar de no existir, se arroja el mensaje que si existe. La insercion de datos si se realiza, pero no esta validando la existencia de un codigo.

No se que puede ser.
  #4 (permalink)  
Antiguo 16/11/2008, 11:18
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Problemas con consulta desde VB a access 2003

Cita:
Iniciado por mumo2006 Ver Mensaje
Estimado. Realicé las modificaciones, pero el problema persiste. El problema en si es que cuando ingreso ese codigo de agendamiento a pesar de no existir, se arroja el mensaje que si existe. La insercion de datos si se realiza, pero no esta validando la existencia de un codigo.

No se que puede ser.
A ver si lo entiendo:

Ingresas un código en el TextBox (que no existe en la tabla) y sale el mensaje "que el codigo ya existe" y además lo graba en la tabla?

  #5 (permalink)  
Antiguo 16/11/2008, 12:14
 
Fecha de Ingreso: agosto-2006
Mensajes: 92
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Problemas con consulta desde VB a access 2003

Cita:
Iniciado por Avellaneda Ver Mensaje
A ver si lo entiendo:

Ingresas un código en el TextBox (que no existe en la tabla) y sale el mensaje "que el codigo ya existe" y además lo graba en la tabla?


Ingreso varios datos. Luego doy a un boton guardar, que es aquel en donde estan las acciones programadas para verificar si uno de los datos, en este caso el CODIGO de AGENDAMIENTO, existe o no en la tabla a guardar. En el caso que exista, sera emitido el mensaje avisando, y en caso contrario el nuevo registro con sus datos, sera incorporado.
Estoy utilizando este recordcount, para contar si existe a lo menos un registro con ese codigo, asi podre verificar que ya existe y por lo tanto enviar ese aviso.
  #6 (permalink)  
Antiguo 16/11/2008, 12:19
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Problemas con consulta desde VB a access 2003

Cita:
Iniciado por mumo2006 Ver Mensaje
Ingreso varios datos. Luego doy a un boton guardar, que es aquel en donde estan las acciones programadas para verificar si uno de los datos, en este caso el CODIGO de AGENDAMIENTO, existe o no en la tabla a guardar. En el caso que exista, sera emitido el mensaje avisando, y en caso contrario el nuevo registro con sus datos, sera incorporado.
Estoy utilizando este recordcount, para contar si existe a lo menos un registro con ese codigo, asi podre verificar que ya existe y por lo tanto enviar ese aviso.
Y has probado ejecutando el programa paso a paso y verificar el valor de RecordCount?

  #7 (permalink)  
Antiguo 16/11/2008, 12:37
 
Fecha de Ingreso: agosto-2006
Mensajes: 92
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Problemas con consulta desde VB a access 2003

Cita:
Iniciado por Avellaneda Ver Mensaje
Y has probado ejecutando el programa paso a paso y verificar el valor de RecordCount?


Si he probado y me registra un -1.
Lo que si me he fijado , es que poseo una conexion por ODBC, ya que la aplicacion esta conectada de varios clientes a uno en el cual esta la base de datos en access.

He leido en otros foros que puede ser la conexion.
Tu sabes si realmente se puede utilizar recordcount aqui?
Lo otro es generar una consulta sql con select count, podria ser una posibilidad?
gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:10.