Access - Problema con línea de código, ayuda...

 
Vista:

Problema con línea de código, ayuda...

Publicado por oMart (8 intervenciones) el 05/06/2008 16:41:17
Buenas tardes, paso a contarles un pequeño problema que tengo con un código que utiliza Recordsets (es código VB, de Access). El código como podrán ver es para copiar datos en el caso de que el valor este vacio. Hasta allí todo bien, mi problema es cuando llego a cierta línea del código que me dice que esta incorrecta (error de sintaxis en cláusula FROM), pero no se encontrar que falla, aun que supongo que será un error básico, pues recién me inicio en este tema.

Private Sub Comando0_Click()
Dim rsEmpreses As Recordset
Dim rsContactes As Recordset
Dim rsBuscar As Recordset

Set rsEmpreses = New Recordset
rsEmpreses.Open "SELECT IDEMPRESA, NOM, COGNOMS, CARREC, TELEFON, EMAIL FROM Empreses", CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdText
Set rsContactes = New Recordset
rsContactes.Open "SELECT IdContacte, Nom, Cognoms, Telefon, Carrec, Email FROM Contactes", CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdText

If Not rsEmpreses.EOF And Not rsEmpreses.BOF Then
rsEmpreses.MoveFirst
While Not rsEmpreses.EOF

Set rsBuscar = New Recordset

rsBuscar.Open ("SELECT * FROM Contactes WHERE id_Empresa = '" & rsEmpreses!IdEmpresa & "'"), CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTable

(Falla esta línea, desde rsBuscar hasta adCmdTable)

If rsBuscar.RecordCount() = 0 Then
rsContactes.AddNew
rsContactes!NOM = rsEmpreses!NOM
rsContactes!COGNOMS = rsEmpreses!COGNOM
rsContactes!Telefon = rsEmpreses!Telefon
rsContactes!CARREC = rsEmpreses!CARREC
rsContactes!EMAIL = rsEmpreses!EMAIL
rsContactes!id_Empresa = rsEmpreses!IdEmpresa
End If
rsEmpreses.MoveNext
Wend
End If
End Sub

Si alguien me pudiese ayudar le estaría muy agradecido, ya que aún me estoy iniciando en este tema y necesitaria arreglar esto cuánto antes... si alguien puede darme una pista por pequeña que sea se lo agradeceria mucho.

Gracias de antemano
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:Problema con línea de código, ayuda...

Publicado por pacopaz (50 intervenciones) el 05/06/2008 18:50:12
El problema, según veo, es el adCmdTable, ya que este traerá una tabla y no un query para representar una tabla. Y dato que lo que estás esperando que te responda sólo te sirve para saber si existe o no un campo, creo que no tendrías mayor problema en cambiarlo a adCmdText.

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:Problema con línea de código, ayuda...

Publicado por Enrique (1299 intervenciones) el 05/06/2008 18:57:56
Hola oMart:
Como veo que estás usando la librería de ADO, lo primero es ver si además tienes tambien activada la de DAO, en cuyo caso deberías de anteponer ADODB tanto a las tres declaraciones Dim como a la línea del Set
Dim rs....... .As ADODB.Recordset
Set rs....... = New ADODB.Recordset
(Access 2000 solo activa por defecto la de ADO, pero el 2002 y 2003 activa las dos y si tienes las dos, se produciría un conflicto de Referencias)

Otra cosa es que en esa línea que dices que falla tienes metido el Select entre paréntesis, no se si será el problema pero en cualquier caso, no son necesarios. En rsEmpreses no tienes los paréntesis y ahí parece que no falla ¿ no ?

En el caso de que Id_Empresa sea de tipo Numérico, no debes poner la condición entre comillas simples como lo tienes ahora, aunque el error en este caso sería "No coinciden los tipos en la expresión de criterios", pero no creo que sea esto porque el error que mencionas es de Sintáxis.

Por último prueba a hacer este cambio, solo por probar porque no se si será ese el problema con seguridad:

........... CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTable
por :
............CurrentProject.Connection, adOpenDynamic, adLockOptimistic
o si falla tambien, deja adOpenKeyset pero quita adCmdTable.

Bueno, con esto al menos podras ir descartando posibilidades del posible error.

Suerte y Saludos
Enrique
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:Problema con línea de código, ayuda...

Publicado por oMart (8 intervenciones) el 05/06/2008 20:36:23
Gracias por responder a mi problema.

Mañana dia 6 de Junio probaré esto que me dijisteis, lo probaré entre las 15h y 18h española.

Sobre lo del AdCmdTable y Text, cierto que antes era AdCmdText y me decia que no coincidian los tipos, luego se lo cambié a AdCmdTable por probar, pero veo que se adapta mejor a Text.

Respeto a los parentesis si, también teneis razón. La verdad antes no los tenía puestos, pero miré en otros foros y en ejemplos otra gente lo ponia, así que por probar los puse, pero me da el mismo error puestos que sin ellos.

Sí, id_Empresa es un campo número, pondré las comillas normales a ver si ocurre alguna cosa hacia bien.

Gracias por las respuestas, la verdad se agradecen.

Ya les informo según siga estos pasos.

Saludos y suerte
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:Problema con línea de código, ayuda...

Publicado por oMart (8 intervenciones) el 06/06/2008 15:49:07
Listo ahí consegui arreglar la maldita frase, la dejé así y ya no da error:

rsBuscar.Open "SELECT * FROM Contactes WHERE id_Empresa = " & rsEmpreses!IdEmpresa, CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdText

Ahora me da error más abajo, en este punto:

rsContactes!id_Empresa = rsEmpreses!IdEmpresa

Me da el siguiente mensaje de error:

"No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido"

¿Qué quiere decir que falla algun tipo de nombre? De ser así están todos bien

Gracias por sus respuestas!
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:Problema con línea de código, ayuda...

Publicado por oMart (8 intervenciones) el 08/06/2008 14:53:03
¿Alguna sugerencia....?

Gracias de antemano
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:Problema con línea de código, ayuda...

Publicado por Enrique (1299 intervenciones) el 08/06/2008 21:50:00
Ese error se produce cuando alguno de los campos no existe o está mal escrito. Lo que observo es que en cuando abres el Recordset de la Tabla Contactes, no incluyes el campo "Id_Empresas", que no se si existirá en esa Tabla o si tendrá ese nombre pero en cualquier caso, no lo incluyes. Me refiero a esto que sigue, fíjate que ese campo no está después del SELECT:

Set rsContactes = New Recordset
rsContactes.Open "SELECT IdContacte, Nom, Cognoms, Telefon, Carrec, Email FROM Contactes", CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdText

Sin embargo en la línea donde te marca el error, pretendes asignarle el valor de "rsEmpreses!IdEmpresa" a ese campo cuando antes no lo has incluido en el Recordset:

rsContactes!id_Empresa = rsEmpreses!IdEmpresa

Sí incluyes un campo de nombre "IdContacte" (el primero de todos), aunque luego no lo usas para nada. Comprueba esto porque puede ser que aquí este el problema, al menos es lo que a mi me parece ver a simple vista.

Saludos
Enrique
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:Problema con línea de código, ayuda...

Publicado por pepo (13 intervenciones) el 09/06/2008 01:13:26
revisa este manual
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