Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Insert en sql 2008 con adoquery (https://www.clubdelphi.com/foros/showthread.php?t=77531)

gianfranco_tont 04-02-2012 20:36:28

Adoquery con sal server
 
Tengo una duda con el componente ado para conectarlo a la base de dato: tengo un tadoconnectin conectado perfectamente a mi base de dato sal server, por otro lado tengo un adoquery1 conectado perfectamente a mi tabla, de hecho puedo activarlo sin si gin problema, incluso puedo ver todos mis campos en el fieles editor mas sin embargo en el panel de structure a la izquierda me muestra los campos todos como inactivos. Necesito de su ayuda no logro avanzar. Perdón estoy usando delphi 2009 codegear.
Gracias por la atención

gianfranco_tont 04-02-2012 20:59:25

Insert en sql 2008 con adoquery
 
Tengo un problema en lograr el incert usando un componente ado en base de dato sql2008. Inicialmente en el from conecte perfectamente un adoquery a mi base de dato, la active y logro ver todos los campos en fieles editor. A un botón coloque esta sentencia:
adoquery1.close;
Adoquery1.sql.clear;
Adoquery1.sql.add ('select * from lín_art');
Adoquery1.sql.add ('where cod_lin ='+coma+edit1.text+coma+
' and lin_desc =' +coma+edit2.text+coma);
Adoquery1.open;
If adoquery1.eof then
Begin
Adoquery1.close;
Adoquery1.sql.clear;
adoquery1.sql.add('incert into lin_art');
Adoquery1.execsql;
Begin
Adoquery1cod_lin.asstring := edit1.text;
Adoquery1lin_desc.asstring :=edit2.text;
Adoquery1.post;
End
End
Else

Esta es mi sintaxis pero por nada del mundo me quiere funcionar.
Agradezco su ayuda.

Caral 04-02-2012 21:39:36

Hola
Bueno, si funcionara, si que seria raro.:D
No entiendo bien que es lo que quieres hacer, el codigo no dice nada.
Saludos

Caral 04-02-2012 21:41:12

Hola
Y que quieres hacer?.
Saludos

gianfranco_tont 04-02-2012 21:49:02

Quiero hacer un incert pero me da un mensaje diciendo que no consigue el campo cod_lin y estoy seguro que sea porque no esta activo ni siquiera en el from

Caral 04-02-2012 21:53:03

Hola
Para empezar coloca aqui (todo) el codigo que llebas hecho, a ver que se ve.
Ah, toma en cuenta que en Español se dice Insertar con S y en Ingles es Insert, con S, tambien.
Saludos

gianfranco_tont 04-02-2012 21:55:10

Cita:

Empezado por Caral (Mensaje 424289)
Hola
Bueno, si funcionara, si que seria raro.:D
No entiendo bien que es lo que quieres hacer, el codigo no dice nada.
Saludos

Jajajajaja. Lo que quiero hacer es hacer un incert en una tabla de sql, primero debo hacer una consulta para verificar que no exista y si no lo encuentra hacer el incert.

gianfranco_tont 04-02-2012 21:57:28

Cita:

Empezado por Caral (Mensaje 424289)
Hola
Bueno, si funcionara, si que seria raro.:D
No entiendo bien que es lo que quieres hacer, el codigo no dice nada.
Saludos

Cita:

Empezado por Caral (Mensaje 424295)
Hola
Para empezar coloca aqui (todo) el codigo que llebas hecho, a ver que se ve.
Ah, toma en cuenta que en Español se dice Insertar con S y en Ingles es Insert, con S, tambien.
Saludos

Bueno es raro realmente escribí toda la sentencia ya que lo estoy haciendo desde el iPad y la maquina donde estoy programando no tiene internet.

Caral 04-02-2012 22:08:19

Hola
No se, algo asi???:

Código Delphi [-]
adoquery1.close;
Adoquery1.sql.Text:= 'select * from lín_art '+
                       'where cod_lin = '+edit1.text+
                     ' and lin_desc = ' +edit2.text;
 Adoquery1.open;
 If adoquery1.eof then
 Begin
 Adoquery1.close;
 Adoquery1.sql.Text:= 'insert into lin_art Values ('+Edit1.Text+ ','+Edit2.Text+')';
 Adoquery1.execsql;
 End
 End
Saludos

gianfranco_tont 04-02-2012 22:25:27

Exacto lo hice pero aun me sigue dando el error que dice adoquery1: field 'cod_lin' no found.

Caral 04-02-2012 22:28:33

Hola
Tienes en la pantallita pequeña los campos???? (campos persistentes)
1- Dale doble click al adoquery1.
2- Saldra una pequeña pantalla.
3- Si hay algun campo en esa pantalla quilato.
Me dice que pasa.
Saludos
PD: Lo que dice el mensaje es bien claro, No se encuentra el campo cod_lin.
Bien, o no existe o no lo ve o esta mal escrito.
Eso es lo que hay que revisar.

gianfranco_tont 06-02-2012 02:14:21

Ahora me da un error de sintaxis incorrecta cerca de '='.

ecfisa 06-02-2012 03:33:56

Hola gianfranco.

Probá si de este modo te resulta más claro:
Código Delphi [-]
  with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM LIN_ART');
    SQL.Add('WHERE COD_LIN = :VALOR1 ');
    SQL.Add('AND LIN_DESC = :VALOR2');
    Parameters.ParamByName('VALOR1').Value:= Edit1.Text;
    Parameters.ParamByName('VALOR2').Value:= Edit2.Text;
    Open;
    if IsEmpty then
    begin
      Close;
      SQL.Clear;
      SQL.Add('INSERT INTO LIN_ART (COD_LIN, LIN_DESC)');
      SQL.Add('VALUES(:VALOR1, :VALOR2)');
      Parameters.ParamByName('VALOR1').Value:= Edit1.Text;
      Parameters.ParamByName('VALOR2').Value:= Edit2.Text;
      ExecSQL;
    end;
  end;
Eso tomando en cuenta los dos campos que has mencionado, si hay más campos para insertar, también los tendrás que incluir en la sentencia SQL.

Saludos.


La franja horaria es GMT +2. Ahora son las 08:11:29.

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