FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Solución para el error "Field ID not found"
Hola a todos, necesito ayuda con un problemilla que tengo en una aplicación cliente / servidor que estoy desarrollando. Estoy utilizando Interbase 6.5 y Delphi 7. Las conexiones las realizo con IBDataSet.
A continuación pongo un ejemplo del código con el que tengo el problema. En el código del ejemplo lo que hago es eliminar un registro seleccionado, pero el error me ocurre tanto cuando inserto, elimino, modifico y refresco. Código:
if dmPrincipal.dsetFamilia.Fields[0].Value <> null then begin if MessageDlg('¿Seguro que desea borrar el registro seleccionado?', mtInformation, [mbYes, mbNo],0) = mrYes then begin dmPrincipal.dsetFamilia.Delete; dmPrincipal.dsetFamilia.ParamByName('ID').AsInteger := dmPrincipal.dsetFamilia.Fields[0].Value; dmPrincipal.dsetFamilia.Open; end else dmPrincipal.dsetFamilia.Open; end else MessageDlg('Debe seleccionar un registro para eliminarlo', mtInformation, [mbYes], 0) Buenos gracias de antemano, y si alguien tiene algunas respuesta para mi enigma de deberé unas cuantas noches en vela. Un saludo. |
#2
|
||||
|
||||
El problema esta en que cuando pasas al parametro el valor "id" estas pasando un literal cuando en realidad lo que se espera es un valor numerico entre 0 y n donde n es la cantidad total de parametros menos uno
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#3
|
|||
|
|||
Antes que nada darte las gracias eduarcol por la rápida respuesta, pero hay algo que no entiendo. No se a que te refieres cuando dices:
Cita:
Código:
... dmPrincipal.dsetFamilia.ParamByName('ID').AsInteger := dmPrincipal.dsetFamilia.Fields[0].Value; ... |
#4
|
||||
|
||||
Perdon no vi bien la sintaxis, tienes razon, pero el asunto esta que el parametro ID no existe ese es todo el problema
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#5
|
|||
|
|||
El la declaración de DeleteSQL tengo lo siguiente:
Código:
DELETE FROM Familia WHERE ID = :ID |
#6
|
||||
|
||||
Hola,
Cita:
En un IBDataSet, sólo tienes acceso a los parámetros que pongas en la sentencia SELECTSQL. Los "parámetros" de las sentencias INSERTSQL, UPDATESQL y DELETESQL los "sustituye" (internamente) por el valor de los campos que tienen el mismo nombre, por eso te borra el registro. Pregunta: Cuando haces un INSERT/APPEND o EDIT del IBDataSet, ¿a que NO le pasas todos los "parámetros" de las sentencias INSERTSQL o UPDATESQL como parámetros (con ParamByName), sino que asignas los valores correspondientes a los campos (FieldByName o Field[x])? Yo haría lo siguiente:
Salu2.
__________________
Progress Openedge https://abevoelker.com/progress_open...dered_harmful/ Delphi forever... |
|
|
|