Visual Basic - Error 13 en tiempo de ejecucion

Life is soft - evento anual de software empresarial
   
Vista:

Error 13 en tiempo de ejecucion

Publicado por Carmen  (1 intervención) el 26/11/2008 21:33:29
Estoy tratando de cargar mi base de datos en un combobox, baje un codigo en internet pero a la hora de correrlo en mi programa me dice error 13, que no coinciden los tipos y me lo marca dnde dice el comomentario "se abre el recordset" espero q me puedan ayudar. Gracias

Private Sub ComboDocente_Click()
' Al hacer Click en el elemento del combo _
se selecciona mediante sql el registro _
y la cadena Sql se asigna al Recorsource del _
Control Data
Data1.RecordSource = _
"SELECT * FROM Registro WHERE Cve_docente='" & cboDoc & "'"

'Refresca el control data
Data1.Refresh

End Sub

Private Sub Form_Load()
Dim Path_Base_Dato As String, db As Database
Dim rst As Recordset


Path_Base_Dato = App.Path
Path_Base_Dato = Path_Base_Dato & "Registro.mdb"

'Abre la base de datos
Set db = OpenDatabase(Path_Base_Dato)

'Abre el Recordset
Set rst = db.OpenRecordset( _
"SELECT Cve_docente FROM Grupo ORDER BY Cve_docente", _
dbOpenSnapshot)

' Se mueve la primer registro
rst.MoveFirst
Do While Not rst.EOF
'Agrega el Nombre al Combo
ComboDocente.AddItem rst!Cve_docente

'siguiente registro
rst.MoveNext
Loop

'Cierra el recordset y la base
rst.Close
db.Close

'Se asigna la base de datos al Data1
Data1.DatabaseName = Path_Base_Dato

'Seleccionamos el primer elemento del combo
ComboDocente.ListIndex = 0

Me.Caption = " Ejemplo de la propiedad recordsource del control Data "

End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error 13 en tiempo de ejecucion

Publicado por karlos (1 intervención) el 26/11/2008 23:03:22
utiliza un datacombo en vez del combobox,,

agrega un modulo y pega esto..

'Procedimiento Para llenar Datos en un datacombo
Public Sub Llenar_Datacombo(ByVal srcSQL As String, ByVal srcListField As String, ByRef srcDC As DataCombo, Optional srcBoundColumn As String, Optional MostrarPrimerRegistro As Boolean)
Dim Rs As New ADODB.Recordset
Rs.CursorLocation = adUseClient
Rs.Open srcSQL, Cn, adOpenStatic, adLockOptimistic
With srcDC
.ListField = srcListField
.BoundColumn = srcBoundColumn
Set .RowSource = Rs
'visualizar el primer registro
If MostrarPrimerRegistro = True Then
If Not Rs.RecordCount < 1 Then
.BoundText = Rs.Fields(srcBoundColumn)
.Tag = Rs.RecordCount & "*~~~~~*" & Rs.Fields(srcBoundColumn)
Else
.Tag = "0*~~~~~*0"
End If
End If
End With
Set Rs = Nothing
End Sub

en tu formulario principal invocalo asi

ejemplo
Call Llenar_Datacombo("SELECT * FROM tbl_SM_Categoria_Productos", "Descripcion", Me.DTCombo1, "codigo_categoria")

donde descripcion es lo q se va a mostrar y codigo_categoria el codigo interno

el control datacombo lo encuentras desde COMPONENTES buscas Microsoft DataList 6.0 (SP6) y agregas

saludos desde Lima bye
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error 13 en tiempo de ejecucion

Publicado por Carlos (13 intervenciones) el 30/11/2008 03:32:42
Hola Carmen;
mira yo lleno los comboBox desde la base de datos de ésta manera:

conexion
rst.Open "SELECT * FROM tablaBaseDatos ", db, adOpenKeyset, &_ adLockOptimistic
If (rst.RecordCount > 0) Then
Do While rst.EOF <> True
comboBox.AddItem rst.Fields("campoBaseDatos")
rst.MoveNext
Loop
End If
rst.Close
db.Close

obviamente que lo cargo al iniciar el form, o sea, dentro del form_load( )

Espero te sirva

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error 13 en tiempo de ejecucion

Publicado por Carlos (13 intervenciones) el 15/12/2008 19:55:37
Te sirvio lo anterior ??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error 13 en tiempo de ejecucion

Publicado por Boris (1 intervención) el 20/01/2009 23:34:07
Algo que no especificas en tu consulta es el tipo de datos al cual estas haciendo referencia. Si pienso que Cve_docente es de tipo texto, para la consulta debes colocar dentro del string encerrado en comillas dobles una comilla simple.

Data1.RecordSource = _
" SELECT * FROM Registro WHERE Cve_docente=' " & cboDoc & " ' "

ojala te aclare tus dudas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error 13 en tiempo de ejecucion

Publicado por Kira (1 intervención) el 06/05/2009 20:15:20
el error que tienes al ejecutar ese codigo es por que esta diseñado para bases compactadas en en visual basic. Te recomiendo que compactes la base de datos en visual basic con el administrador de bases de datos que se encuentra en el menu complementos de vsual basc alli esta el administrador de BD y alli es donde esta la opcion de compactra BD en MDB..

O tambien puede ser las referencias que no esten activadas .
fijate en proyecto y luego en referencias y buscas si tienes cactivado la referencia Microsoft ActiveX Data Objects la ver son mas actual que tengas puede ser 2.8 a 3.0 dependiendo la que tengas.

Espero que con eso resuelvas tu problema....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar