Ayuda con codigo

catty_peque
26 de Febrero del 2004
Hola a todos tengo un problema, este es un programa que me carga los numeros de documentos en un list al seleccionar uno de los numeros y al dar agregar el detalle de este documento me lo guada en una tabla temporal y al dar aceptar me lo pasa los registros de temporal a una grilla, lo q sucede es q el programa funciona muy bien cuando solo tengo 2 numeros de documentos en el list pero si tengo 3 me arroja error al seleccionar el segundo list, es un error de bof y eof, no se q hacer o como corregirlo, les envio mi codigo haber si le encuentran la falla, es urgente... no se si se habra entendido la idea...
Este es el codigo

Dim cn As ADODB.Connection
Dim rsVR As ADODB.Recordset
Dim rs As ADODB.Recordset
Dim tempfactura As ADODB.Command
Dim rstodos As ADODB.Recordset
Public total As Double
Public IGV As Double


Private Sub cmdAceptar_Click()
Set rstodos = New ADODB.Recordset
With rstodos
.ActiveConnection = cn
.Source = "select * from temp_factura"
.CursorLocation = adUseClient
.Open
End With
Set frm_Factura.grdFactura.DataSource = rstodos
frm_Factura.txtImporte.Text = total
frm_Factura.txtTotalIGV.Text = IGV

If frm_Factura.optDolares.Value = True Then
frm_Factura.lblImporte.Caption = Val(frm_Factura.txtTipoCambio.Text) * (Val(total) + Val(IGV))
frm_Factura.txtTotal.Text = Val(total) + Val(IGV)
Else
frm_Factura.lblImporte.Caption = Val(total) + Val(IGV)
frm_Factura.txtTotal.Text = (Val(total) + Val(IGV)) * Val(frm_Factura.txtTipoCambio.Text)
End If

Unload Me
End Sub

Private Sub cmdAgregar_Click()
Dim nro_vr, cantidad, subtotal, precio_venta, nro_planta, comb_descripcion, igv_pv, comb_codigo As String
Set rs = New ADODB.Recordset
With rs
.ActiveConnection = cn
.CursorLocation = adUseClient
.Source = "SELECT VALE_RECARGA.NRO_PLANTA, VALE_RECARGA.NRO_VR, DETALLE_VR.COMB_CODIGO, DETALLE_VR.CANTIDAD, PRECIO_VENTA, IGV_PV," & _
" COMBUSTIBLE.COMB_DESCRIPCION, PRE_ESTADO, (CANTIDAD * PRECIO_VENTA)AS SUBTOTAL FROM ((VALE_RECARGA" & _
" INNER JOIN DETALLE_VR ON VALE_RECARGA.NRO_VR = DETALLE_VR.NRO_VR)" & _
" INNER JOIN COMBUSTIBLE ON DETALLE_VR.COMB_CODIGO = COMBUSTIBLE.COMB_CODIGO)" & _
" INNER JOIN(SELECT COMB_PLANTA.COMB_CODIGO, COMB_PLANTA.NRO_PLANTA, PRECIO_VENTA, IGV_PV, PRE_ESTADO FROM COMB_PLANTA INNER JOIN PRECIO ON COMB_PLANTA.COMB_CODIGO=PRECIO.COMB_CODIGO" & _
" AND COMB_PLANTA.NRO_PLANTA=PRECIO.NRO_PLANTA) AS PRECIOS" & _
" ON PRECIOS.COMB_CODIGO=COMBUSTIBLE.COMB_CODIGO AND PRECIOS.NRO_PLANTA = VALE_RECARGA.NRO_PLANTA" & _
" WHERE VALE_RECARGA.NRO_VR = '" & lstVale.List(lstVale.ListIndex) & "' AND PRE_ESTADO = 'A'"
.Open
End With
nro_vr = rs!nro_vr
cantidad = rs!cantidad
precio_venta = rs!precio_venta
subtotal = rs!subtotal
nro_planta = rs!nro_planta
comb_descripcion = rs!comb_descripcion
igv_pv = rs!igv_pv
comb_codigo = rs!comb_codigo
total = total + Val(subtotal)
IGV = IGV + Val(igv_pv * cantidad)

Set tempfactura = New ADODB.Command
With tempfactura
.ActiveConnection = cn
.CommandType = adCmdText
.CommandText = "insert into TEMP_FACTURA (NRO_VR, NRO_PLANTA, COMB_DESCRIPCION, PRECIO_VENTA, IGV_PV, CANTIDAD, COMB_CODIGO, SUBTOTAL)" & _
" values ('" & nro_vr & "', '" & nro_planta & "', '" & comb_descripcion & "', '" & precio_venta & "', '" & igv_pv & "', '" & cantidad & "', '" & comb_codigo & "', '" & subtotal & "')"
.Execute
End With
' pasar de un list a otro
Dim I As Integer
While Not I = lstVale.ListCount
If lstVale.Selected(I) Then
frm_Factura.lstFactura.AddItem (lstVale.List(I))
lstVale.RemoveItem (I) ' Elimina los seleccionados
Else
I = I + 1
End If
Wend
cmdAceptar.Enabled = True
End Sub

Private Sub Form_Load()

' conexion a la Base de Datos
Set cn = New ADODB.Connection
cn.ConnectionString = "Data Source= Set Cn = New ADODB.Connection"
cn.Provider = "Microsoft.Jet.Oledb.4.0"
cn.ConnectionString = App.Path & ("ST.mdb")
cn.Open
' fin de la conexion

cmdAceptar.Enabled = False

Set rsVR = New ADODB.Recordset
With rsVR
.ActiveConnection = cn
.Source = "select * from vale_recarga where cli_codigo= '" & frm_Factura.txtCodCliente.Text & "' and vr_estado='NA'"
.CursorLocation = adUseClient
.Open
End With

Do Until rsVR.EOF
lstVale.AddItem (rsVR("nro_vr"))
rsVR.MoveNext
Loop
total = 0
IGV = 0
Me.Height = 3735
Me.Width = 3270
End Sub

Muchas gracias por su ayuda

Saludos

Catty