Visual Basic - No ejecuta la sentencia sql

Life is soft - evento anual de software empresarial
 
Vista:

No ejecuta la sentencia sql

Publicado por Ana (7 intervenciones) el 22/02/2011 12:26:04
Hola, tengo la siguiente funcion de visual al meter un valor en un campo (IdCliente) que me tiene que recuperar varias campos de otra tabla y meterlos en campos de texto de un subformulario.
No se que pasa que no me ejecuta la sentenciaSQL. Creo que no la ejecuta porque miro en la tabla donde hace la consulta y hay una fila que cumple la condicion where.

Private Sub IdCliente_Exit(Cancel As Integer)

Dim SentenciaSQL As String
Dim RsBuscar As New ADODB.Recordset
Dim BD As New ADODB.Connection
Dim Identificador As String
Dim Importe_Base As String
Dim Num_Facturas As String
Dim Descrip_Fact As String

SentenciaSQL = "SELECT Num_Contrato,Antes_impuestos,NFacturas_anuales,Concepto_Factura_Plagas FROM Contratos_Plagas WHERE Contratos_Plagas.IdCliente=" & IdCliente '& " and Fecha_Contrato='*" & Año & "'"

MsgBox SentenciaSQL

BD.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\base_datos\clientes_empresa.mdb;Persist Security Info=False"

BD.Open

RsBuscar.Open SentenciaSQL, BD, adOpenDynamic, adLockOptimistic

Do While RsBuscar.EOF

MsgBox "Entramos en el bucle"
Identificador = RsBuscar.Fields("Num_Contrato").Value
Importe_Base = RsBuscar.Fields("Antes_impuestos").Value
Num_Facturas = RsBuscar.Fields("NFacturas_anuales").Value
Descrip_Fact = RsBuscar.Fields("Concepto_Factura_Plagas").Value
MsgBox RsBuscar.Fields("Num_Contrato").Value
MsgBox RsBuscar.Fields("Antes_impuestos").Value
MsgBox RsBuscar.Fields("NFacturas_anuales").Value
MsgBox RsBuscar.Fields("Concepto_Factura_Plagas").Value

RsBuscar.MoveNext
Loop
MsgBox "Vamos a cerrar la BD"
RsBuscar.Close
BD.Close
Set RsBuscar = Nothing
Set BD = Nothing
End Sub

Gracias y un saludo,

Ana.
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
sin imagen de perfil
Val: 4
Ha aumentado su posición en 25 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:No ejecuta la sentencia sql

Publicado por Paolo Santos (76 intervenciones) el 22/02/2011 20:25:34
Creo que el error esta en la seleccion de la fecha: Fecha_Contrato='*" & Año & "'" no se porque usas el asterisco, ademas del uso de apostrofe para select, no se usa para fechas, se debe de utilizar las almohadillas ( # ), asi que intenta corregir dejandolo de la siguiente forma: Fecha_Contrato=#" & Año & "#", aunque no sabemos que motor de base de datos usas, pero si no funciona con las almohadillas entonces usa el apostrofe, pero lo mas seguro son las almohadillas, suerte y espero sea la respuesta que buscabas, cualquier cosa estamos para servirte 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:No ejecuta la sentencia sql

Publicado por Ana (7 intervenciones) el 23/02/2011 14:19:35
La parte del año la he comentado, no esta en formato ejecutable porque como no me acordaba del formato de fecha lo comente para que solo buscara el IdCliente.
Y quitandole lo de la fecha, me seguia sin realizar la select correctamente.

La select la hace y no da error de base de datos, el problema es que no me saca ningun registro y es lo que me mosquea porque me tiene que sacar un registro que cumple la condición porque he trucado la base de datos para que salga ese registro pero nada...no lo hace.

Gracias.
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
sin imagen de perfil
Val: 4
Ha aumentado su posición en 25 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:No ejecuta la sentencia sql

Publicado por Paolo Santos (76 intervenciones) el 23/02/2011 20:05:23
SentenciaSQL = "SELECT Num_Contrato,Antes_impuestos,NFacturas_anuales,Concepto_Factura_Plagas FROM Contratos_Plagas WHERE Contratos_Plagas.IdCliente=" & IdCliente '& " and Fecha_Contrato='*" & Año & "'"

Vamos haber si entiendo el select es el siguiente:

SentenciaSQL = "SELECT Num_Contrato,Antes_impuestos,NFacturas_anuales,Concepto_Factura_Plagas FROM Contratos_Plagas WHERE Contratos_Plagas.IdCliente=" & IdCliente '& " and Fecha_Contrato='*" & Año & "'"

ahhhhh ya perdon no habia visto que estaba comentado desde la concatenacion despues de idcliente, bueno revisando el resto del codigo en el select lo puedes dejar asi:

SentenciaSQL = "SELECT * FROM Contratos_Plagas WHERE IdCliente=" & IdCliente

por otra parte veo que en el ciclo creo ver un problema:

Do While RsBuscar.EOF

MsgBox "Entramos en el bucle"
Identificador = RsBuscar.Fields("Num_Contrato").Value
Importe_Base = RsBuscar.Fields("Antes_impuestos").Value
Num_Facturas = RsBuscar.Fields("NFacturas_anuales").Value
Descrip_Fact = RsBuscar.Fields("Concepto_Factura_Plagas").Value
MsgBox RsBuscar.Fields("Num_Contrato").Value
MsgBox RsBuscar.Fields("Antes_impuestos").Value
MsgBox RsBuscar.Fields("NFacturas_anuales").Value
MsgBox RsBuscar.Fields("Concepto_Factura_Plagas").Value

RsBuscar.MoveNext
Loop

en el Do While, le estas diciendo que mientras sea fin del registro hacer, y deberia de ser que mientras NO sea fin del registro hacer asi que deberia de quedar asi:

Do While NOT RsBuscar.EOF

Pruebalo asi haber que tal, espero sea tu solucion 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:No ejecuta la sentencia sql

Publicado por Ana (7 intervenciones) el 24/02/2011 12:03:28
Efectivamente, estoy tonta...no me habia dado cuenta del error.

Muchisimas gracias Paolo.

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
sin imagen de perfil
Val: 4
Ha aumentado su posición en 25 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:No ejecuta la sentencia sql

Publicado por Paolo Santos (76 intervenciones) el 24/02/2011 19:05:08
Ok que bueno que solucionastes tu problema, cualquier cosa estoy para servirte 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:No ejecuta la sentencia sql

Publicado por Ana (7 intervenciones) el 25/02/2011 13:08:16
Pues mira, ahora que me dices eso, jejeje, te voy a comentar otra cosita.

Tengo un formulario y un subformulario. Cuando hago intro en un campo del formulario me tiene que cargar unos valores(realizando una select en el evento) en el subformulario. Ya tengo los valores en la funcion de visual, que te enseñe, metidos en un recordset pero no se como pasarlos a los campos del subformulario.
He mirado varias cosas pero no me sale ni una. La ultima que he puesto es:

Me.Form![Subformulario_Contratos].Form![Contratos_Num_Contrato].Value = RsBuscar.Fields("Num_Contrato").Value

A ver que me puedes aconsejar.

Gracias y un saludo,

Ana.
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
sin imagen de perfil
Val: 4
Ha aumentado su posición en 25 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:No ejecuta la sentencia sql

Publicado por Paolo Santos (76 intervenciones) el 25/02/2011 18:00:50
Ummm la verdad no tengo mucha experiencia en usar formularios con ADO, puesto que mi experiencia radica en usar DAO esto siginifica que cuando necesito mostrar datos utilizo el control msflexgrid y los selects, updates e inserts, los hago directos a la base de datos usando querys, esto lo hago asi para darme mas seguridad de lo que inserto o actualizo en la base de datos, y no me gusta como se actualizan campos con los formularios, creo que lo vas a tener que colocar como nuevo tema para que algun otro experto te ayuda, pero si quieres un pequeño consejo, no se si en el formulario exista el evento key_down o key_up o keypress, para que cuando detecte el enter que es el keyascii 13 del formulario 1 le asigne al formulario2.value el select que necesite, es decir algo asi:

Private Sub Formulario1_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then
set RsBuscar="SELECT * FROM ,,,,,,,,"
formulario2.value= RsBuscar.Fields("Num_Contrato").Value
RsBuscar.close
end if

End Sub

Asi lo haria cada vez que presionen enter en alguna casilla que necesites, pero no se si es la solucion que buscabas, si no es esta pues mejor te aconsejo que lo agregues como nota nueva, 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