El Guru Programador
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Foro de Visual Basic/VB.NET
Foros del Guru > Visual Basic/VB.NET
Usuario Problema con EOF y BOF???
Oblacionx
34 Mensaje(s)
Enviado - 29/9/2004
 
Tengo el siguiente problema necesito, hacer una subconsulta, pero como al hacerlo me salia el valor de BOF o EOF es True, el registro actual se elimino, la operacion solicitada requiere un registro actual, para lo cual separe en dos consultas, para conseguir primero la fecha y pasarla luegoa una 2da consulta, pero me sale el mismo error, les agradecere su ayuda, aqui les anexo el codigo antes descrito

Dim rsProducto As New ADODB.Recordset
Dim rsFecha As New ADODB.Recordset
Dim intCantidad As Integer
Dim dtFecha As Date

With rsFecha
.ActiveConnection = cn
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.Source = "SELECT MAX(FecLot) as FECHA FROM Lote WHERE CodPro='" & txtCodPro.Text & "'"
.Open
End With

If IsNull(rsFecha!Fecha) = True Then
dtFecha = Date
Else
dtFecha = rsFecha!Fecha
End If
rsFecha.Close
Set rsFecha = Nothing

With rsProducto
.ActiveConnection = cn
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.Source = "SELECT CanProRes as CANTIDAD FROM Lote WHERE CodPro='" & txtCodPro.Text & "' AND FecLot=" & dtFecha
.Open
End With

If IsNull(rsProducto!Cantidad) = True Then
intCantidad = 0
Else
intCantidad = rsProducto!Cantidad
End If

lblCantidadTotal.Caption = intCantidad + CInt(txtCantidadLote.Text)
 
fmarredo
486 Mensaje(s)
Enviado - 30/9/2004
 
Antes de acceder a algún campo del recordset tenés que preguntar si éste tiene registros.
Por lo que veo vos estás asumiendo que los recordset tienen registros y no necesariamente es así.
Además, viendo lo que estás haciendo, me parece que podés resolver todo con una sola consulta SQL.
 
Oblacionx
34 Mensaje(s)
Enviado - 30/9/2004
 
Disculpa como podria hacer para que toda la consulta sea una sola, al inicio quise hacer una subconsulta pero a partir de alli me aparecio el mismo mensaje de error por eso preferi separarlo en dos, te agradeceria , me expliques como podria hacer.
 
fmarredo
486 Mensaje(s)
Enviado - 30/9/2004
 
Por lo que veo en las consultas que hiciste estás buscando la cantidad de artículos del último lote de un determinado producto.
Si es así podría quedar algo así:

Dim rsProducto As ADODB.Recordset
Dim intCantidad As Integer
Dim strSQL As String

strSQL = " SELECT CanProRes as CANTIDAD " & _
" FROM Lote " & _
" WHERE CodPro = '" & txtCodPro.Text & "' " & _
" AND FecLot = (SELECT MAX(FecLot) FROM Lote WHERE CodPro='" & txtCodPro.Text & "')"

Set rsProducto = New ADODB.Recordset
rsProducto.Open strSQL, Cn

If Not rsProducto.EOF Then
intCantidad = Val(rsProducto!Cantidad & "")
End If

lblCantidadTotal.Caption = intCantidad + CInt(txtCantidadLote.Text)

Set rsProducto = Nothing
 
Oblacionx
34 Mensaje(s)
Enviado - 30/9/2004
 
Sabes me sirvio de mucho tu ayuda, pero quisiera hacerte una consulta mas, mira tengo una tabla lotes donde ingreso los lotes por fechas, y asumo que el lote con mayor fecha es el ultimo , pero si por alguna razon ingresas los lotes de un mismo producto con las fechas en desorden todo el codigo, botara resultados inesperados, como puedo saber cual ha sido el ultimo registro que ingreso asi no tendria que depender de la fecha mayor
 
 

 

Contactos myStudio Network