| 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 |
| |
|
|
|