Tengo un error trabajando con Visual Basic 6, Microsoft Access 2003 y SQL

Te hago una consulta estoy en VB6, access 2003 y SQL.. Te paso el modulo a ver si ves el error que dice "no coinciden los tipos"
Public rs As New ADODB.Recordset
Public cn As ADODB.Connection
------------------------------------------------------------------------------------
Public Sub Conectar()
Set cn = New ADODB.Connection
cn.CursorLocation = adUseClient
cn.Open "provider= microsoft.jet.oledb.4.0;data source=C:\.......BD.mdb;persist security info=false"
Exit Sub
End Sub
-------------------------------------------------------------------------------
Public Function ConsultaSQL(sql As String) As Recordset
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open sql, cn, adOpenStatic, adLockOptimistic
Set ConsultaSQL = rs   ----->ACA ME DA EL ERROR: consultaSQL=Nothing me dice
End Function
Librerias: Microsoft ADO extens 2.5, M.office 11.0, M.Jet, M.DAO 3.6, M.access 11.0 y las q siempre salen x defecto.

1 respuesta

Respuesta
1
Acabo de revisar tu código y lo probé con una de mis base de datos y no arrojo errores, entonces te hago la siguiente pregunta:
¿Agregaste la referencia Microsoft ActiveX Data Objects 2.8 Library o cualquier otra version si es que no tienes la 2.8?
Puede ser 2.7 o 2.6 o 2.5 o 2.1 o 2.0 (Agrega la version mas reciente que tengas).
Y si el problema no se soluciona con esto dime como llamas al Procedimiento conectar y a la función ConsultaSQL para ver como realizas las consultas.
Gracias por responder tan rapido..! En el Form pongo conectar y conecta bien, las librerías si probé Microsoft ActiveX Data Objects 2.8 y las anteriores... esto es lo único que pude hacer porque salta ese error ahí. En el form tengo un botón buscar que busca el numero de un paciente lo muestra en un textbox y desp lo debe agregar a un listview, pero no puedo avanzar...
-------------------------------------------------------------
Private Sub cmdBuscar_Click()
If txtIdPac.Text <> "" Then
Set rs = ConsultaSQL("select * from paciente where idpaciente=" & Val(txtIdPac.Text))
If rs.RecordCount > 0 Then
ConsultaSQL ("select * from paciente where idpaciente=" & Val(txtIdPac.Text))
txtNombrePac.Text = rs!nombre & "," & rs!apellido
cmdAsignar.Enabled = True
Else: MsgBox "No se encontro el paciente"
txtIdPac.Text = ""
txtNombrePac.Text = ""
End If
Else: MsgBox "Ingrese un nro de paciente" ---->esto funciona es lo unico q puedo probar
End If
End Sub
-------------------------------------------
Private Sub Form_Load()
Conectar
End Sub
------------------------------------------ Te lo separo en lineas así es más visible----
Rebice nuevamente el código implementando lo que me acabs de enviar y te comento lo siguiente:
Cree una base de datos BD con una tabla de paciente primero cree el campo idpaciente como valor numérico y paso lo que me imaginaba me mostró los datos (DESDE VB 6) cuando lo busque (sin problemas) pero luego decidí cambiar el campo idpaciente a valor Texto (en la BD) y luego busque el idpaciente y nuevamente paso lo algo que ya tenia presente que podía pasar "arroja el error de no coinciden los tipos de datos".
Por esto te recomiendo que te fijes en que tipo de datos esta el campo idpaciente en tu BD ya que si haces una consulta como la que me enviaste ConsultaSQL("select * from paciente where idpaciente=" & Val(txtIdPac.Text)) y en tu BD el campo idpaciente es del tipo Texto no te permite buscarlo como valor numerico o Double (Val(...)) si fuera por esto que te comento y no quieres cambiar el tipo de valor del campo para realizar la consulta y buscar en un campo de texto se debe realizar de la siguiente manera:
ConsultaSQL("select * from paciente where idpaciente='" & cstr(txtIdPac.Text) & "'")
Espero y se logre solucionar tu problema en caso de que no se solucione continuaremos hasta corregirlo.
Bye.
Esta bien el campo es tipo numérico..la verdad que no se que puede ser... porque todos los forms los hago conectando así, y funcionan..
Igual me sirve mucho lo que me decís del campo texto.. lo que voy a hacer es borrarlo y hacerlo de nuevo si tengo tiempo.. ahora estoy haciendo otro.. estoy practicando porque rindo un final... el jueves y que no me funcione desde el principio, voy mal... igual ya se que puedo contar con vos.. porque tengo otros ejercicios que tienen un error y los deje así. Gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas