FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Pasar parámetros a sentencia SQL con DBExpress
Toda la tarde leyendo y haciendo pruebas y no hay manera
Símplemente quiero pasar como parámetro a una sentencia SQL el campo primario escogido de un DBGrid para eliminar el registro de la tabla. Si paso ese campo a la sentencia SQL como una variable, no hay problema, se ejecuta y borra el registro:
Pero si lo paso como parámetro, me dice que éste es desconocido:
Donde cdsBuscaCliente es un TClientDataSet y QrBuscaCliente es un TSQLQuery. Otras cosas que he hecho dentro de las pruebas:
¿alguna sugerencia? |
#2
|
|||
|
|||
A ver
Estimado:
¿Porque no crea directamente la consulta EN el componente en vez de crearla "al vuelo"?. Acuérdese de poner también que el parámetro es de tipo "input". BertHäuser |
#3
|
|||
|
|||
Simplemente lo que pasa, es que cuando se modifica la propiedad Sql se vuelven a regenerar los parametros, i vacia su valor.
Prueba de poner el sql primero, i luego asigna el valor al parametro. Tambien puedes dejar el codigo fuente igual, i poner la propiedad SqlQuery.ParamCheck a FALSE. Esto lo que hace es que no se autogeneran los parametros cuando se reescribe el Sql. Código:
if Application.MessageBox('¿Deseas borrar el cliente seleccionado?', 'Confirmar', MB_ICONQUESTION or MB_YESNO) = idYes then begin QrBuscaCliente.SQL.Clear; QrBuscaCliente.SQL.Add('DELETE FROM cliente WHERE cli_id = :cli_id'); cdsBuscaCliente.Params.ParamByName('cli_id').asInteger:= codigoABorrar; QrBuscaCliente.ExecSql; end; uri. |
#4
|
|||
|
|||
Gracias por vuestro interés, he ha sido útil.
BertHauser, puse el parámetro a input como dijiste. Cita:
Oriol, es como tú has dicho, ja funciona. Por algún motivo creí que antes de pasar la instrucción SQL se debía de pasar el parámetro. Funciona correctamente si lo paso con el parámetro del query:
No funciona si utilizo el parámetro del ClientDataSet
Eso me hace plantear una nueva pregunta: ¿qué diferencia hay entre los parámetros del DBQuery con los del ClientDataSet? Otra pregunta: cuando ejecuto, borra correctamente el registro de la línea seleccionada en la base de datos, pero en la grid no desaparece. He utilizado DBGrid1.Refresh; también he probado poner False y True el clientDataSet pero así lo único que consigo es tener una excepción Cursor not returned from Query, y posteriormente deja de visualizar lo que había en la grid. ¿hay alguna forma de refrescar si volver a hacer un SELECT sql? Gracias. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Pasar parametro a una sentencia sql | molinero1 | SQL | 23 | 12-04-2007 17:55:22 |
Pasar parametros.... | Coco_jac | SQL | 2 | 02-09-2006 04:28:16 |
Como obtener los parametros para dbexpress al conectarme por odbc..! | Arturo | Conexión con bases de datos | 2 | 20-05-2006 00:51:42 |
Error con parámetros en SQL server y dbexpress | jdiazan | Conexión con bases de datos | 0 | 09-07-2004 09:38:25 |
pasar una variable a una sentencia sql | acrophet | SQL | 6 | 03-11-2003 17:01:02 |
|