![]() |
Problema con ibDataSet y parametros.
Hola a tod@s.
Os paso a comentar el problema que tengo con ibDataSet. Tengo un idDataSet, con las propiedades : .SelectSql = SELECT * FROM nivel WHERE cod = :niv .DeleteSql= DELETE FROM nivel WHERE cod = :niv Si hago el Select me muestra los registros correctamente pero cuando hago el delete no me hace nada, el código es el siguiente: ibDataSet.Active = False; ibDataSet.ParamByName.('niv').AsString = Trim(edit1.Text); ibDataSet.Active = True; ibDataSet.Delete; Alguien podría explicarme porque me sucede esto, si los ibDataSet hay que usarlos de otra manera, si los parametros se tienen que definir de otra forma. Acepto cualquier sugerencia. Gracias a tod@s. |
quizas pueda interesarte este hilo de hace unos dias
http://www.clubdelphi.com/foros/show...&threadid=2490 |
Gracias Cadetill, pero ya había visto ese hilo, pero sigo sin sacar en claro porque no puedo borrar registros cuando utilizo parametros, sino pongo ningún parámetro me borra toda la tabla y si le pongo no me hace nada de nada. No sé si el código q he puesto arriba es correcto, a la hora de definir los parámetros y utilizar el ibDataSet.
|
Hola Nuria!
El problema reside en que no le estas pasando el parámetro a la sentencia DeleteSQL... me explico ;) al realizar esta linea: Cita:
Cita:
Cita:
P.D.:Bonita firma :P |
Hola Franker!
Muchas gracias por la respuesta, estaba segura de que era por los parámetros que no lo asignaba bien. Pero sigo sin que funcione: quote: -------------------------------------------------------------------------------- ibDataSet.QDelete.Params.ByName.('niv').AsString = Trim(edit1.Text); -------------------------------------------------------------------------------- Cuando compilo el programa me da el siguiente error: 'Undeclared identifier 'QDelete' '. No reconoce la propiedad QDelete del ibDataSet.¿Hay que enlazar el ibDataSet con algún otro componente? Yo lo tengo enlazado a un TDataSource. Otra duda que tengo es la siguiente: Existe alguna diferencia entre estas 2 líneas: 1-ibDataSet.QDelete.Params.ByName.('niv').AsString= Trim(edit1.Text); 2-ibDataSet.QDelete.ParamByName('niv').AsString = Trim(edit1.Text); De nuevo doy las gracias por la ayuda prestada y la venidera. :p P.D.: Franker.Sigue el consenjo de mi firma. Saluditos |
con QDelete, supongo que se queria referir a DeleteSQL
|
He probado a poner también estas líneas:
-ibDataSet.DeleteSQL.Params.ByName('niv').AsString = Edit1.Text; -ibDataSet.DeleteSQL.ParamByName('niv').AsString = Edit1.Text; Al compilar me da error en la línea: 'Undeclared identifier 'Params' '. 'Undeclared identifier 'ParamByName' '. :confused: |
Bueno, de hecho es normal. Estas propiedades son de tipo TStrings y los parametros pertenecen al TDataset. Ademas, el IBDataset no esta pensado para tratarlo de la manera en que tu lo intentas tratar (para eso ya tenemos los TIBQuery o TIBSQL).
El TIBDataset esta pensado para hacer un simple IBDataset1.Delete; y el se encarga de rellenar los parametros de la consulta SQL que tenemos en la propiedad DeleteSQL. Por eso la forma de rellenar esta propiedad es como comento en el hilo mencionado en mi primer post, con algo al estilo a Código:
delete from EMPRESES Intenta hacer la prueba. Pon un TDataBase, un TIBTransaction, un TDataset, un TDataSource, un TDBGrid y un TDBNavigator. Liganos todos e informa las propiedades pertinentes (las del TDataset como indico en el hilo mencionado) y dale al boton de borrar del Navigator (o al de añadir o modificar). Veras como funciona a la primera |
Por fin!!!! :D
Muchas Gracias Cadetill, por fin he entendido como funciona el ibDataSet y tienes razón al decirme que no lo trataba adecuadamente. Pensaba que funcionaba de otra manera, que sería como los parámetros del TIBQuery, TIBSQL...., hacía el SelectSql y como funcionaba, pensaba que con el updateSQL, insertSQL y deleteSql también debía de funcionar de la misma manera, una que es un poco cabezona :p . Gracias por aclararme las dudas. Saluditos. |
La franja horaria es GMT +2. Ahora son las 05:02:57. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi