Ayuda sql

Tengo una form y en ella tengo un dblookupcombobox y dos maskedit que son para las fechas y el combobox para el área en un query (sql propiedad) escribí
INSERT INTO DEMANDAR
Select * From gdemanda
where (DBLookupComboBox1.Text = turnadoexterior) AND (FECHACAPTURA>= MASKEDIT1.TEXT AND MASKEDIT2<=FECHACAPTURA)
Pero me marca error se de antemano que estoy mal y la verdad no se como hacerle ya llevo más de una semana intentando hacerlo pero no doy, por tu amable ayuda gracias, la verdad me de pena molestar pero no tengo a quien recurrir.
Atentamente.
Juan Manuel

1 respuesta

Respuesta
1
No, no te preocupes mira lee de nuevo lo primero que te envíe, te mencione como se construye un sql con parámetros y como le das valor a esos parámetros. Por ejemplo suponiendo que tu tienes una tabla de usuarios pero solo quieres mostrar un usuario según el numero capturado en un Edit entonces tu query seria así:
Select * from Usuario
where USU_ID=:usuario
Suponiendo que USU_ID es un campo de la tabla de usuario y :usuario simplemente es cualquier nombre que hace referencia al parámetro. Ok entonces ahora simplemente debes darle valor a este parámetro y ejecutar tu query así: esto lo pones en el onClick de un botón
Query1.Active := false;
Query1.Params[0].Value := Edit1.Text;
Query1.Active := true;
Y listo el parametro cero que en este caso seria :usuario tomara el valor que tu tengas en el Edit1.Text;
Pues bien de igual forma funciona el Insert o el Update o el delete tu pones tu insert into tabla(campos)
Values(:param1,:param2... etc)
Si me explico como funcionan los parámetros osea los parámetros sirven para no tener fijo alguna consulta si yo tuviera select * from usuarios where usu_id=10 pues este query siempre me traería el usuario 10, si me explico en cambio si yo pongo en vez del valor 10 un parámetro :usuario entonces ya puedo estar dándole diferentes valores al parámetro.
Bueno espero me haya explicado...
Insert into DEMANDAR
Select * From gdemanda
where (turnadoexterior =:DBLookupComboBox1.Text) And (fechacaptura >= :DateTimePicker1.Date And fechacaptura <=:DateTimePicker2.Date)
Disculpa la capture de este modo mi pregunta es tengo que utilizar el StrToDate para los parámetros de fechas y para el combobox en vez de text que utilizo ya que le asigno un numero en vez del nombre del área
De nuevo gracias por ayudarme, espero tu respuesta. Cuidate mucho.
Bueno si vas a usar los MaskEdit para las fechas, pues por supuesto que al asignar el valor de fecha al parámetro tienes que convertirlo por ejemplo
Query.Params[1].Value := StrToDate(MaskEdit1.Text);
Esto lo haces ya que value es de tipo fecha.
Ahora el insert que pusiste no es correcto, no se si solo me lo pusiste así teóricamente solo para mostrármelo: (este inserta esta mal jamas funcionaria ok)
Insert into DEMANDAR
Select * From gdemanda
where (turnadoexterior =:DBLookupComboBox1.Text) And (fechacaptura >= :DateTimePicker1.Date And fechacaptura <=:DateTimePicker2.Date)
Bueno espero me haya entendido, pero recomiendo de nuevo usar el componente DateTimePicker para las fechas en vez de maskedti
Disculpa mi ignorancia y espero no quitarte mucho tiempo
DBLookupComboBox1.Text este combo recibe un numero tiene que llevar .Text o .Integer YA QUE EL CAMPO EN LA TABLA ES NUMÉRICO
Ya estoy utilizando como me dijiste DateTimePicker2. Date
También voy a quitar el INSERT INTO pero dime por favor como hago para que la información que filtre la inserte a la tabla DEMANDAR
Tengo apenas un mes y medio aprendiendo
Delphi y la verdad me esta costando hacer el sistema que me pide mi jefe.
De nuevo Por tu amable atención GRACIAS
Si así es estas un poquito mal, pero no te preocupes es sencillo, pon atención:
Lo que intentas hacer se llama parámetros y van de la siguiente manera, según tu ejemplo:
Insert into demandar(NombreDeCampos)
select * from gddemanda
where (NombreCampo =:Param1) and (FechaCaptura = :FechaInicial <= FechaCaptura = :FechaFinal)
:Param1.- Se refiere al primer parámetro que en este caso seria el área.
:FechaInicual y :FechaFinal.- Son los parámetros de fechas, aquí te recomiendo usar un componente de fecha en vez del MaskEdit.
Ahora en Query tienes que configurar los paramtros, hay una propiedad llamada Params al darle click en el inspector de objectos se abrirá un ventana y ahí deberá estar los 3 parámetros (Param1, FechaInicial y FechaFinal), entonces seleccionas el primero y en sus propiedades hay una que se llama DataType ahí le pondrás el tipo de dato para el Área y en ParamType le pondrás de Input, luego haces lo mismo con los otros dos parámetros los cuales serán de tipo fecha me imagino.
Y lo siguiente sera ejecutar tu query dándole valor a los parámetros así:
Query1.Params[0].Value := DBLookupCombobox.Text;
Query1.Params[1].Value := DateTimePiker1.Date;
Query1.Params[2].Value := DateTimePiker2.Date;
Query1.ExecSQL;
Y listo es todo.
Recuerda que el DateTimePiker lo cambiamos por el MaskEdit. Ok
Bueno espero me haya explicado, si no dime que paso.
Gracias volví de nuevo a teclear todo paso a paso y ya salio lo que necesitaba hacer, gracias por ayudarme y tenerme paciencia, que dios te lo pague y te bendiga por ser buena gente, seguiré echándole ganas y en lo que no pueda te estaré pidiendo tu ayuda, claro si tu me lo permites.
Cuidate mucho
Atentamente.
Juan Manuel

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas