Visual Basic - Falla en codigo

Life is soft - evento anual de software empresarial
 
Vista:

Falla en codigo

Publicado por Martin (75 intervenciones) el 09/02/2012 21:53:56
Buenas tardes, tengo una aplicacion realizada en vb 6.0 en la cual enlazo una BD access a un DataReport el cual esta disenado sin dataenvironment, funciona bien, el problema es que no me filtra bien los resultados que deberian imprimirse, me manda al reporte todos los registros de la bd y no se cual es la falla de mi codigo, aqui lo anexo a ver si pueden orientarme por favor

Gracias,,..

DIM OC_FOLIO as string
OC_FOLIO= OC-65
base10.Open "DRIVER={Microsoft Access Driver (*.mdb)};dbq=" & RutaBD & "\OCOMPRA.mdb", , "Tabla_OCompras" & cPas
Set rs10 = base10.Execute("Select * from Tabla_OCompras")
Set Reporte_OC.DataSource = rs10
rs10.MoveFirst
Do While rs10.EOF = False
If rs10.Fields("FOLIO") = OC_FOLIO Then
Rep_OC.Sections("Section4").Controls("Lbl_Empresa").Caption = Empresa
Rep_OC.Sections("Section4").Controls("Lbl_FOLIO").Caption = FolioOC
Rep_OC.Show
rs10.MoveNext
Else
rs10.MoveNext
End If
Loop
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

Falla en codigo

Publicado por Saul (4 intervenciones) el 09/02/2012 22:07:50
DIM OC_FOLIO as string
OC_FOLIO= OC-65
base10.Open "DRIVER={Microsoft Access Driver (*.mdb)};dbq=" & RutaBD & "\OCOMPRA.mdb", , "Tabla_OCompras" & cPas

'En Esta Linea aria deverias de filtrar tu tabla

Set rs10 = base10.Execute("Select * from Tabla_OCompras WHERE oc_Folio = OC_FALIO")


Set Reporte_OC.DataSource = rs10
rs10.MoveFirst
Do While rs10.EOF = False
If rs10.Fields("FOLIO") = OC_FOLIO Then
Rep_OC.Sections("Section4").Controls("Lbl_Empresa").Caption = Empresa
Rep_OC.Sections("Section4").Controls("Lbl_FOLIO").Caption = FolioOC
Rep_OC.Show
rs10.MoveNext
Else
rs10.MoveNext
End If
Loop
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

Falla en codigo

Publicado por Martin (75 intervenciones) el 09/02/2012 22:23:30
El problema es que así ya no funciona debido a que no acepta el comando movefirst y al irse el recordset directamente al EOF el ciclo ya no se ejecuta, aquí anexo como queda el código con tu consejo a ver que otra cosa esta mal

DIM OC_FOLIO as string
OC_FOLIO= OC-65
base10.Open "DRIVER={Microsoft Access Driver (*.mdb)};dbq=" & RutaBD & "\OCOMPRA.mdb", , "Tabla_OCompras" & cPas

'En Esta Linea aria deverias de filtrar tu tabla

Set rs10 = base10.Execute("Select * from Tabla_OCompras WHERE oc_Folio = 'OC_FOLIO'")


Set Reporte_OC.DataSource = rs10
rs10.MoveFirst 'Esta línea ya no funciona
Do While rs10.EOF = False 'Aqui el ciclo ya no se ejecuta porque el rs esta en EOF
If rs10.Fields("FOLIO") = OC_FOLIO Then
Rep_OC.Sections("Section4").Controls("Lbl_Empresa").Caption = Empresa
Rep_OC.Sections("Section4").Controls("Lbl_FOLIO").Caption = FolioOC
Rep_OC.Show
rs10.MoveNext
Else
rs10.MoveNext
End If
Loop
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

Falla en codigo

Publicado por Pablo (1 intervención) el 11/02/2012 06:49:38
Cambiá la linea

Set rs10 = base10.Execute("Select * from Tabla_OCompras WHERE oc_Folio = 'OC_FOLIO'")

por ésta:

Set rs10 = base10.Execute("Select * from Tabla_OCompras WHERE oc_Folio = ' & OC_FOLIO & ' " )
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

Falla en codigo

Publicado por Martin (75 intervenciones) el 12/02/2012 06:16:06
Negativo Pablo, se va directo al fin del recordset, este es el codigo como queda con tu recomendacion, gracias :

DIM OC_FOLIO as string
OC_FOLIO= OC-65
base10.Open "DRIVER={Microsoft Access Driver (*.mdb)};dbq=" & RutaBD & "\OCOMPRA.mdb", , "Tabla_OCompras" & cPas

Set rs10 = base10.Execute("Select * from Tabla_OCompras WHERE FOLIO = ' & OC_FOLIO & ' " )

Set Reporte_OC.DataSource = rs10

Do While rs10.EOF = False 'Aqui el ciclo ya no se ejecuta porque el rs se va al EOF
If rs10.Fields("FOLIO") = OC_FOLIO Then
Rep_OC.Sections("Section4").Controls("Lbl_Empresa").Caption = Empresa
Rep_OC.Sections("Section4").Controls("Lbl_FOLIO").Caption = FolioOC
Rep_OC.Show
rs10.MoveNext
Else
rs10.MoveNext
End If
Loop
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

Falla en codigo

Publicado por Adolfo Diaz (29 intervenciones) el 07/03/2012 00:41:55
Ya que estás conectado con el DataEnvironment, agrega un comando y en la opción Propiedades eliges SQL. Ahí puedes dar el abrebocas con Select OC_FOLIO from OC_COMPRAS , luegos vas al GENERADORD DE SQL y gregas los otros campos a consultar con los filtros que desees.
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