![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Haces alguna operación con el AdoStoredProc??? algo como moverte por los registros asi como AdoStoredproc.first??? Es posible que al no tener datos e intentar moverte por los registros te tire ese error. Lo ideal antes de moverte es ver si ese dataset tiene datos. algo como:
Código:
if AdoStoredProc1.IsEmpty then Hago lo que tenga que hacer.... |
|
#2
|
||||
|
||||
|
aquí está el código
Gracias por la respuesta, la verdad no estoy recorriendo el dataset sino que solo ejecuto el procedimiento, este me devuelve registros y solo muestro el resultado, en realidad es una función en postgresql que me devuelve un set of record:
Código:
DataModule2.buscar_cliente.Close();
DataModule2.buscar_cliente.Parameters[0].Value=Edit21.Text;
DataModule2.buscar_cliente.Prepared=True;
DataModule2.buscar_cliente.ExecProc();
DataModule2.buscar_cliente.Open();
if (DataModule2.buscar_cliente.RecordCount=0) then
begin
ShowMessage('No hay coincidencias');
DataModule2.DataSource2.DataSet.Active=False;
end;
else
DataModule2.DataSource2.DataSet.Active=True;
El problema va cuando no ecuentra coincidencias, me muestra el mensaje de "el valor bof o eof es true..............." y la búsqueda ya no funciona más, solo me muestra el mensaje cada vez que ejecuto el procedimiento. Parece que tendría que "reiniciar" el procedimiento cada vez que lo ejecuto pero no sé como hacerlo. |
|
#3
|
||||
|
||||
|
Si el resultado del StoredProc es un conjunto de registros no deberías de llamar a ExecProc simplemente llama a Open, a parte de poner el prepared a false antes de asignar parametros....
Código:
DataModule2.buscar_cliente.Close;
DataModule2.buscar_cliente.Prepared=False;
DataModule2.buscar_cliente.Parameters[0].Value=Edit21.Text;
DataModule2.buscar_cliente.Prepared=True;
DataModule2.buscar_cliente.Open;
if (DataModule2.buscar_cliente.isempty) then
begin
ShowMessage('No hay coincidencias');
DataModule2.DataSource2.DataSet.Active=False;
end
else
DataModule2.DataSource2.DataSet.Active=True;
|
|
#4
|
||||
|
||||
|
Ok.......... cambie el código como me indicaste pero igual da el error ese y la búsqueda ya no jala, bueno entonces cual es la diferencia entre ExecProc y Open?
|
|
#5
|
||||
|
||||
|
a ser posible indicanos el código del storeproc.
P.D. En principio el execproc no devuelve cursor y el open si, es decir el execproc es para consultas que no sean select y no devuelven conjunto de datos vease insert, updates... |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| problema con procedimiento almacenado | aladelta | Firebird e Interbase | 7 | 14-02-2007 01:52:34 |
| Problema con Procedimiento almacenado | Tauro78 | Firebird e Interbase | 6 | 12-02-2007 17:43:06 |
| Problema con procedimiento almacenado | XBart | Firebird e Interbase | 3 | 27-10-2005 09:08:17 |
| Problema con procedimiento almacenado | juziel | Firebird e Interbase | 4 | 20-09-2004 18:31:41 |
| Problema con un procedimiento almacenado | Markoz | Firebird e Interbase | 1 | 08-07-2003 11:47:20 |
|