Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Gorky en 31 Enero 2008, 08:51 am



Título: Error en consulta a base de datos
Publicado por: Gorky en 31 Enero 2008, 08:51 am
Buenas foreros. Tengo el siguiente codigo:
Código
  1. Dim BDD As Database 'Objeto para manejar la base de datos
  2. Dim TBL As Recordset 'Objeto para manejar la Tabla
  3. Set BDD = OpenDatabase("Pladur.mdb") 'Abre la base de datos
  4. Dim SQL As String
  5. SQL = "SELECT * FROM muros"
  6. Set TBL = BDD.OpenRecordset(SQL)   'TBL almacena todos los valores de la tabla
  7. TBL.MoveFirst  'nos posicionamos en el primer registro de la tabla
  8. Do Until TBL.EOF  ''La propiedad EOF se pone TRUE cuando se a llegado al final de la tabla
  9.   List1.AddItem TBL("material")
  10.   TBL.MoveNext   'pasamos al siguiente registro
  11. Loop

Me da un error de que no coinciden los tipos en la linea:
Código
  1. 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.


Título: Re: Error en consulta a base de datos
Publicado por: Chefito en 31 Enero 2008, 17:33 pm
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:
Código:
Set TBL = BDD.OpenRecordset(SQL, dbOpenTable)
y a partir de aquí, si no te funciona, prueba con todos.
Suerte.


Título: Re: Error en consulta a base de datos
Publicado por: Pendex en 8 Febrero 2008, 21:27 pm
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.-