Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   filtrar tabla paradox y copiar a otra (https://www.clubdelphi.com/foros/showthread.php?t=43561)

gerardo 15-05-2007 00:38:15

filtrar tabla paradox y copiar a otra
 
first chance excetion at $7665b09E exception class EDBEngineError with message 'invalid use of keyword. token: INSERTLine numbre 2'. process SICAL.exe

este es el mensaje de error que me manda
gracias por el interes de contestar mis preguntas

Caral 15-05-2007 00:40:36

Hola gerardo
Esta muy claro, no pudo insertar.
Que mas puedo decir sin ver algo del codigo que genero este error, tu mismo.
Saludos

ContraVeneno 15-05-2007 00:57:05

falta un espacio entre el Insert y line, ademas, se escribe number, no numbre.

Eso, como adivino, pues eso, he adivinado, eso.

Para no adivinar:
¿cuál es la sentencia SQL?

gerardo 15-05-2007 02:32:36

filtrar tablas paradox y copiar a otra
 
ese es el menaje de error que me da el delphi
first chance excetion at $7665b09E exception class EDBEngineError with message 'invalid use of keyword. token: INSERTLine numbre 2'. process SICAL.exe

este es el codigo para filtrado

procedure TForm22.AdvGlowButton5Click(Sender: TObject);
begin
query1.Active:=false;
query1.ParamByName('Folio').AsInteger:= StrToInt(Edit1.Text);
Query1.ParamByName('Materia').AsString:= ComboBox2.Text;
Query1.Prepare;
Query1.Active:=True
end;
hasta aqui no hay problema

codigo para pasar los datos ya filtrados este es el que da el problema
procedure TForm22.AdvGlowButton1Click(Sender: TObject);
begin
Table1.Edit;
with query1 do
begin
Query1.SQL.Add('INSERT INTO portable (Materia)');
Query1.SQL.Add('SELECT materia FROM califica');
Query1.SQL.Add('WHERE Materia = Edit1.text');
Query1.ExecSQL;

end;


end;

ESTE CODIGO LO ESCRIBI PERO NO ME FUNCIONA

Caral 15-05-2007 05:09:50

Hola
Traduccion de lo que haces:
1.Edite la tabla1
2.con el query1 haga esto:
3.inserte dentro de X
4.Seleccione campo de una tabla.
5.donde campo = edit1
6.ejecute.
Perdona, pero esto si te funciona:confused: , me parece casi imposible, por eso te lo puse para analizarlo un poco.
Logica:
1.Seleccione campo de una tabla.
2.donde campo = edit1
3.abra tabla.
4.inserte dentro de X o edite
5.ejecute.
Analiza un poco la logica y veremos como te va.
Creo que darte el codigo correcto, en este caso te perjudica, no aprendes.:)
Saludos

ContraVeneno 15-05-2007 16:59:23

Muy simple. Estas pasando edti1.text dentro de la cadena, no como valor; mas bien deberías usar algo así:
Código Delphi [-]
  with query1 do
  begin
 SQL.Add('INSERT INTO portable (Materia)');
 SQL.Add('SELECT materia FROM califica');
 SQL.Add('WHERE Materia = '''+Edit1.text+'''');
 ExecSQL;
end;

//O cualquiera de estas:
SQL.Add('WHERE Materia = '+QuotedStr(Edit1.text));
//-
SQL.Add('WHERE Materia = :Materia');
ParamByname('Materia').AsString:=edit1.text;
/-

Y dos cosas más:
1.- Si vas a usar "With Query1 do", no es necesario que sigas poniendo "Query." en cada línea, de eso se encarga el "With". Así como lo tienes, es como si te subieras a un coche y te lo llevaras empujando.

2.- ¿Para que es el Table1.Edit? ¿Esta enlazado a la misma tabla del query? Si es así, no necesitas hacer las dos cosas.


La franja horaria es GMT +2. Ahora son las 17:20:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi