Visual Basic - problema al realizar consulta

Life is soft - evento anual de software empresarial
   
Vista:

problema al realizar consulta

Publicado por carolina (11 intervenciones) el 09/06/2009 19:13:36
HOLA SALUDOS A TODOS, ES UN POCO LARGA LA EXPLICACION PERO ESTA INTERESANTE ES PARA QUE ME ENTIENDAN YA QUE EN OTROS FOROS NO HAN PODIDO AYUDARME

ESTOY TRABAJANDO EN LA ELABORACION DE UN PROGRAMA LES EXPLICO EN QUE CONSISTE:

EL PROGRAMA ES PARA CONSULTAR PRECIOS DE LOS PRODUCTOS DE UNA EMPRESA A TRAVES DE UNA LECTORA DE CODIGO DE BARRAS. AL PASAR EL SERIAL DEL PRODUCTO SOBRE EL LECTOR DE LA PISTOLA, ESTE CODIGO ES MOSTRADO EN UN TEXTBOX, DEBIDO A QUE LA PISTOLA EMITE UN ENTER AL LEER EL CODIGO ESTE AUTOMATICAMENTE ME REALIZA UNA ACCION.

DICHA ACCION ES LA QUE ME TRAE PROBLEMAS PORQUE NECESITO HACER LO SIGUIENTE:

REALIZAR UNA CONSULTA EN TRES TABLAS (SAPROD, SACODBAR, SAITEO) ESTAS TABLAS ESTAN RELACIONADAS POR LOS CODIGOS EL PRODUCTO(SAPROD.CODPROD,SACODBAR.CODPROD,SAITEO.CODITEM)

-LA TABLA SAPROD ES LA PRINCIPAL ELLA CONTIENE LOS DATOS (CODPROD,DESCRIP,DESCRIP2,PRECIO)

-LA TABLA SACODBAR CONTIENE LOS CODIGOS DE BARRA ALTERNOS DEL PRODUCTO (CODPROD,CODALTE)

-LA TABLA SAITEO ES LA QUE CONTIENE LAS OFERTAS(CODITEM,MONTO).

DEBIDO A QUE LOS USUARIOS REQUIEREN MOSTRAR TODOS ESTOS DATOS EN UN SOLO "FORM" AL PASAR EL CODIGO POR LA LECTORA HAY QUE UNIR LAS TABLAS RELACIONADAS POR EL CODIGO PARA QUE CUANDO SE REALICE EL EVENTO "ENTER" EN LA CAJA DE TEXTO VERIFIQUE SI EXISTE EL CODIGO DEL PRODUCTO EN LAS 3 TABLAS.

cuando me refiero a que debe estar le codigo en las 3 tablas es porque en el formulario se deben llenar campos que no estan en una misma tabla, estan en las 3. no tanto en las 3 tablas seria mas que todo en dos tablas ya que en la principal esta un codigo del producto y hay otros codigos alternos que no estan en esa tabla y si el producto tiene un codigo alterno que no esta en la tabla principal me diria que no existe el codigo.

LA consulta la genere en sqlserver solo utilice la sentencia sql que el programa genera y lo extraño es que en sqlserver si me realiza la busqueda con esa sentencia, por lo que estoy segura que el error esta en la linea .find


ENTONCES E AQUI MI DIFICULTAD PORQUE EN LA CONSULTA NO ME BUSCA EN LAS 3 TABLAS SOLO BUSCA EN LA PRINCIPAL (SAPROD) POR LO TANTO NO ME MUESTRA NADA.

ESTE ES EL CODIGO DE LA CONSULTA:

rs.Open "SELECT SAPROD.CodProd, SAPROD.Descrip, SAPROD.Descrip2, SAPROD.Descrip3, SAPROD.Refere, SAPROD.Precio3, SAITEO.MONTO FROM SAPROD left outer join sacodbar on saprod.codprod = sacodbar.codprod left outer join SAITEO ON saprod.codprod = saiteo.CodItem; ", Busqueda, adOpenStatic, adLockOptimistic

ESTE EL CODIGO DEL TEXTBOX

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then

If Text1.Text = "" Then MsgBox ("Debe Ingresar El Codigo Del Producto"), vbInformation, "aviso": Text1.SetFocus: Text1.Text = "": Exit Sub

With rs
.Requery
.Find "CodProd='" & Trim(Text1.Text) & " '" //CREO QUE AQUI ES EL ROBLEMA
If .EOF Then
MsgBox ("El Codigo No Existe"), vbInformation
Text1.Text = ""
Text1.SetFocus

Else
Text2.Text = !Descrip
Text3.Text = !Descrip2
Text4.Text = !Descrip3
Text5.Text = !Refere
Text6.Text = !Precio3
Text7.Text = "" & !Monto
End If
End With

End If

End Sub

DONDE MARQUE EN NARANJA CREO QUE ES EL PROBLEMA PERO NO SE COM ARREGLARLO, YO CREO QUE ES PORQUE ESTOY MANADANDO A MOSTRAR EN "CODPROD" Y EL TOMA POR DEFECTO EL CODIGO DE LA TABLA SAPROD. NO SE COMO HACER UNA CONDICION EN CODPROD PARA QUE LEA LOS CODIGOS DE LAS 3 TABLAS.

BUENO ASI CULMINO CON MI EXPLICACION DE VERDAD YA LO HE INTENTADO TODO A QUIEN ME PUEDA AYUDAR GRACIAS
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 al realizar consulta

Publicado por Iñaki (502 intervenciones) el 10/06/2009 16:15:12
Hola Carolina,
Vamos por partes
Una de las razones por las que no encuentra el codigo, puede ser el que contenga un caracter al final; eso lo puedes comprobar mostrando el codigo en pantalla con MsgBox (por. ejemp.), y en tal caso truncar el dato, mediante funciones como Mid(...,....).
Una vez que ves que el codigo esta bien, tratas de hacer una busqueda en la tabla principal, y si sigue bien, a contiuacion crear una consulta tipo String.

dim StrConsulta as String
StrConsulta = " select SAPROD.CODPROD, SAPROD.DESCRIP, SAPROD.DESCRIP2, SAPROD.PRECIO FROM SAPROD left Join SACODBAR in SAPROD.CODPROD = SACODBAR.CODPRO WHERE SAPROD.CODPROD = ' " & TXT1.TEXT & " ' ".

Rs.open StrConsulta, [parametros]

Esta ultima consulta no tiene todos los campo, pero te puede valer como otra prueba y luego añadir la otra tabla con sus campos.

Espero que te pueda servir de ayuda.
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 al realizar consulta

Publicado por carolina (11 intervenciones) el 10/06/2009 22:44:36
hola, ya se cual es el problema pero no tengo la mas minima idea de como arreglarlo.

el rollo esta en que el metodo .find únicamente permite el uso de un campo, yo al realizar mi busque necesito como minimo pasar por 2 campos y este metodo no me sirve.

no se cual otro que sea parecido al .find me sirva...????

gracias ......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 al realizar consulta

Publicado por Pedro Luis (878 intervenciones) el 11/06/2009 13:28:42
En primer lugar hablas de tres tablas y solo seleccionas campos de dos.
Haces dos join y creo que con uno bastaria.
La instrucción para buscar es FindFirst y el método para averiguar si se ha encontrado es Nomatch.
Puede ser que estés en el foro equivocado.
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 al realizar consulta

Publicado por P3L30N2009 (701 intervenciones) el 11/06/2009 14:05:36
Bueno, de entrada procuremos no confundir al personal:

Tanto el método Find como FindFirst mueven el puntero de un objeto recordset buscando una cadena coincidente con el valor de un campo correspondiente a un registro del mismo.

La diferencia es que Find es un método de ADO y FindFirst lo es de DAO. Y por la forma que indica de abrir el recordset, me dá la impresión de que está trabajando con ADO, y por lo tanto, "La instrucción para buscar NO ES FindFirst" ya que esta instrucción no la soporta el método ADO.
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 al realizar consulta

Publicado por Iñaki (502 intervenciones) el 11/06/2009 20:35:15
Carolina, no se si me explique claro, el metodo Find, dices que te falla, que lo que quieres es que busque por varios campos, entonces lo que tendrias que hacer es crear una consulta SQL, y de esta forma si te admite varios campos.
Empieza por crear una consulta SQL simple, que te devuelva el minimo de campos, y despues le vas agregando mas campos.
por ejemp. : " select codprod, descrip, descrip2, precio from saprod where codprod like ' " & txt1.text & " ' " .

Si esta consulta te sale bien, le añades las otras dos tablas.
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 al realizar consulta

Publicado por carolina  (11 intervenciones) el 16/06/2009 16:00:01
hola, a todos nuevamente les escribo para contarles que busque una forma de solventar el problema, debido a que no pude hacer lo que yo esperaba me idee otra forma de hacerlo.

el find. quedo asi :

.Find "CodigoProducto='" & Trim(Text1.Text) & " '"

la setencia:
rs.Open "SELECT SACODBAR.CodAlte As CodigoProducto, SAPROD.CodProd, SAPROD.Descrip, SAPROD.Descrip2, SAPROD.Descrip3, SAPROD.Refere, SAPROD.Precio3, SAITEO.MONTO FROM SAPROD left outer join sacodbar on saprod.codprod = sacodbar.codprod left outer join SAITEO ON saprod.codprod = saiteo.CodItem; ", Busqueda, adOpenStatic, adLockOptimistic

tuve que hacer un procedimeinto en la db para que cuando se agreguen los codprod automaticamente me lo cargue en el codalte.

y asi solvente el problema ya que elñ find reconocera los codigos ..............me despido y gracias a todos por las sugerencias hasta una proxima
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 al realizar consulta

Publicado por CAROLINA (11 intervenciones) el 12/06/2009 15:33:30
HOLA, A TODOS

ESTOY PROBANDO A VER SI ME SIRVE
MUCHAS GRACIAS POR SUS RESPUESTAS
SALUDOS..................ESTARE EN CONTACTO
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