FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
SQL con parametros Delphi 7
Que tal a todos, les saludo y agradezco anticipadamente su ayuda, he estado buscando por doquier informacion para una consulta SQL en Delphi 7 la cual no arroja nada. no soy muy diestro en la programacion por lo que podran ver errores en mi codigo.
Var NCLie : integer; var, string, // ninguno de estos casos ha funcionado. DataModule1.ADOQuery1.SQL.Clear; DataModule1.ADOQuery1.SQL.Add('SELECT * FROM CLIENTE WHERE CLAVE LIKE :Nclie'); DataModule1.ADOQuery1.Parameters.ParamValues['NCLie'] := StrToInt(Edit1.Text); DataModule1.ADOQuery1.ExecSQL; DataModule1.ADOQuery1.Open; Posterior a esto en otra form tengo un dbgrid ligado a esta consulta. si cambio el :NClie por un valor numerico funciona y hace la consulta SQL pero si dejo el parametro no hace nada y el dbgrid en blanco. He cambiado intentado el Query1. con varias opciones pero no funciona. Gracias nuevamente y espero haber sido lo mas claro posible |
#2
|
|||
|
|||
1. La instrucción DataModule1.ADOQuery1.ExecSQL está demás. ExecSQL o sus equivalentes en otros dataset se utilizan cuando la consulta no devuelve un conjunto de resultados, por ejemplo en una instrucción Update o Delete.
2. El operador SQL LIKE, en la mayoría de los motores de bases de datos, requiere que el segundo operando (en este caso NCli) sea de tipo alfanumérico, por lo que es posible que tu código trabaje bien de la siguiente manera:
Espero te sirva. |
#3
|
|||
|
|||
Gracias por tu aportación, intente lo que me has recomendado y obtengo el mismo resultado. Pondre el código completo. Quizas ahí este el error y no lo note.
procedure TForm1.BitBtn1Click(Sender: TObject); Var NClie : integer; begin If Edit1.Text <>'' Then Begin Try NClie := StrToInt(Edit1.Text); DataModule1.ADOQuery1.SQL.Clear; ShowMessage('El valor de la variable es:'+' '+IntToStr(NClie)); <---- Agregue esta ventana para ver el valor que lleva NCLie y es correcto A) DataModule1.ADOQuery1.SQL.Add('SELECT * FROM CLIENTE WHERE CLAVE=:NClie'); <---- En esta parte le cambie el LIKE por el WHERE B) DataModule1.ADOQuery1.SQL.Add('SELECT * FROM CLIENTE WHERE CLAVE LIKE :Nclie'); <---- El DBGrid esta vacio con LIKE o WHERE DataModule1.ADOQuery1.Parameters.ParamValues['NCLie'] := Edit1.Text;; DataModule1.ADOQuery1.Open; Form2 := TForm2.Create(Self); Form2.ShowModal; Except ShowMessage('Lo siento no puedo abrir la base de datos'); End End Else end; Gracias por su atención |
#4
|
||||
|
||||
Como diría Casimiro...
Recuerda poner los tags al código fuente, ejemplo: Gracias
__________________
La Madurez se llama... ~~~Gaia~~~ |
#5
|
||||
|
||||
Lo primero: ¿Clave es numérico o alfanumérico?.
El LIKE no me cuadra mucho siendo numérico, la verdad. Yo dejaría la consulta A). Por otra arte, en la asignación te has hecho un lío, creo. Usas una variable que se llama igual que el parámetro que no te sirve para nada, y aunque fuera el parámetro, el valor lo compruebas antes de asignarle un valor... Bueno, mira a ver si ésto te sirve:
__________________
La Madurez se llama... ~~~Gaia~~~ |
#6
|
|||
|
|||
Que tal, buen dia de nuevo por aqui. gracias a su ayuda y comentarios que me han hecho; les comento que le busque de una forma de otra y nada no arroja informacion en DBGrid. en ocasiones daba errores, cambie los campos de consulta y nada. Para entonces de buscar y buscar siempre en la misma tabla decidi cambiar a otra, la sorpresa fue que la consulta si se realizaba. Por lo que asumo que es la tabla la que arroja el error.
La estructura de la tabla CLIENTEy en especifico del campo que intente consultar ("CLAVE") es "Texto" y el motor de la BD es MS SQL server 2008 no tengo idea de como realizar esta consulta dado que el campo en especifico no muestra nada en consulta y es precisamente el que requiero para obtener la informacion Esta es la nueva consulta en la cual he cambiado a la tabla de INVENTARIO y el campo CVE_ART y funciona muy bien pero no es la tabla que requiero consultar. Alguien que tenga alguna idea? Saludos |
#7
|
|||
|
|||
Que tal, buen dia de nuevo por aqui. gracias a su ayuda y comentarios que me han hecho; les comento que le busque de una forma de otra y nada no arroja informacion en DBGrid. en ocasiones daba errores, cambie los campos de consulta y nada. Para entonces de buscar y buscar siempre en la misma tabla decidi cambiar a otra, la sorpresa fue que la consulta si se realizaba. Por lo que asumo que es la tabla la que arroja el error.
La estructura de la tabla CLIENTE y en especifico del campo que intente consultar ("CLAVE") es "Texto" y el motor de la BD es MS SQL server 2008 no tengo idea de como realizar esta consulta dado que el campo en especifico no muestra nada en consulta y es precisamente el que requiero para obtener la informacion Esta es la nueva consulta en la cual he cambiado a la tabla de INVENTARIO y el campo CVE_ART y funciona muy bien pero no es la tabla que requiero consultar. Alguien que tenga alguna idea? Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Estructuras de parametros en delphi | jularaXD | Varios | 9 | 11-03-2014 14:54:25 |
Parametros en ReportBuilder 14 Delphi XE2 | papycool | Impresión | 0 | 19-09-2013 22:25:12 |
Problema con parametros en Delphi for .Net | lalosan | SQL | 3 | 27-02-2007 22:01:02 |
Parametros Delphi 2006 | raorre | OOP | 3 | 28-07-2006 18:18:58 |
|