Error en consulta a base de datos

Iniciado por Gorky, 31 Enero 2008, 08:51 AM

0 Miembros y 1 Visitante están viendo este tema.

Gorky

Buenas foreros. Tengo el siguiente codigo:
Código (vb) [Seleccionar]
Dim BDD As Database 'Objeto para manejar la base de datos
Dim TBL As Recordset 'Objeto para manejar la Tabla
Set BDD = OpenDatabase("Pladur.mdb") 'Abre la base de datos
Dim SQL As String
SQL = "SELECT * FROM muros"
Set TBL = BDD.OpenRecordset(SQL)   'TBL almacena todos los valores de la tabla
TBL.MoveFirst  'nos posicionamos en el primer registro de la tabla
Do Until TBL.EOF  ''La propiedad EOF se pone TRUE cuando se a llegado al final de la tabla
   List1.AddItem TBL("material")
   TBL.MoveNext   'pasamos al siguiente registro
Loop


Me da un error de que no coinciden los tipos en la linea:
Código (vb) [Seleccionar]
Set TBL = BDD.OpenRecordset(SQL)   'TBL almacena todos los valores de la tabla
Si no me equivoco la sonsulta la hace bien ya que si en la sentencia SQL intento buscar en una tabla que no existe me dice que esa tabla no se puede encontrar.
Creo que el fallo esta al hacer la asignacion pero no se como solucionarlo.
Por ultimo decir que la base de datos es de access 2000.
Gracias por todo.

Chefito

Te pongo lo que pone el msdn:

Para los objetos Connection y Database:

Set variable = objeto.OpenRecordset (origen, tipo, opciones, bloquearmodificaciones)



Valores

Puede utilizar una de las siguientes constantes para el argumento tipo.

Constante Descripción
dbOpenTable Abre un objeto Recordset de tipo Table (sólo espacios de trabajo Microsoft Jet).
DbOpenDynamic Abre un objeto Recordset de tipo Dynamic, que es parecido a un cursor dinámico ODBC (sólo espacios de trabajo ODBCDirect)
dbOpenDynaset Abre un objeto Recordset de tipo Dynaset, que es parecido a un cursor de conjunto de claves ODBC.
dbOpenSnapshot Abre un objeto Recordset de tipo Snapshot, que es parecido a un cursor estático ODBC.
dbOpenForwardOnly  Abre un objeto Recordset de tipo Forward-only. 


Nota Si abre un objeto Recordset en un espacio de trabajo Microsoft Jet y no especifica un tipo, el método OpenRecordset crea una objeto Recordset de tipo Table, si es posible. Si especifica una tabla vinculada o una consulta, el método OpenRecordset crea un objeto Recordset.de tipo Dynaset. En un espacio de trabajo ODBCDirect, el valor predeterminado es dbOpenForwardOnly.

Se supone que te crea un objeto recordset de tipo table.....si es posible claro. Prueba con:Set TBL = BDD.OpenRecordset(SQL, dbOpenTable)
y a partir de aquí, si no te funciona, prueba con todos.
Suerte.
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)

Pendex

Poniendo :
----------------------------------------
Dim BDD As Database
TablaSet BDD = OpenDatabase("Pladur.mdb")
Dim SQL As String
SQL = "SELECT * FROM muros"
Set TBL = BDD.OpenRecordset(SQL)
TBL.MoveFirst
Do Until TBL.EOF
List1.AddItem TBL("material")   
TBL.MoveNext   
Loop
---------------------------------------
...tiene que andar...fijate si estas referenciando el Proyecto a ADO 3.51...
o quiza tenes que referenciarlo a SQL Parser...una vez me paso eso e hice esto y listo...
Slds.-