PDA

Ver la Versión Completa : Adicionar Registros con SQL


servicomp
07-08-2006, 18:56:11
Anteriormente solicite la ayuda del foro para resolver un problema sobre como adicionar registro en una base datos en interbase usando delphi y conactandola mediante IBX

Le he hecho caso a mis compañeros y tengo una Edit donde capturo la información que debe de ir en el campo llave, y unos DBEdit donde se captura la información Complementaria. Tengo en la forma un boton que me permite grabar la información.

En el boton de grabar tengo el siguiente codigo:


DataM.IBDataSet1.Open;
DataM.IBDataSet1.Append;
Edit1.SetFocus;

En el IBDataSet en el SQL Select tenemos algo asi:
INSERT INTO TABLA1 (CAMPO1, CAMPO2, CAMPO3) VALUES (:CAMPO1, :CAMPO2, :cAMPO3)
El campo1 es el campo llave.

Al Activar el botón de grabar, graba la información con excepción del campo llave que se encuentra en Edit1.Text.

Creo que debo agregar una instrucción asi
INSERT INTO TABLA1 (CAMPO1, CAMPO2, CAMPO3) VALUES (:edit1.text, :CAMPO2, :cAMPO3)

Lo que pasa es que si inserto este tipo de instrucción no se me activa el IBDataset1.

Si debo de agregarlo en el evento del boton grabar como lo debo de hacer.

Agradeciendo su ayuda

vtdeleon
07-08-2006, 19:08:04
DataM.IBDataSet1.Open;
DataM.IBDataSet1.Append;
Edit1.SetFocus;Solo eso?
Creo que hace falta algo! Algo como:
DataM.IBDataSet1.ParamByName('campo1').AsString:=ValordelCampo;//Variable o valor que tomará este campo.
//Y asi con los demas campos
DataM.IBDataSet1.Post;
//Finalmente Guardar.

La 1ra sentencia está bién, la segundo no es valida.

servicomp
07-08-2006, 20:15:57
he insertado en el codigo para el boton grabar lo siguiente

DataM.IBDataSet1.ParamByName('campo1').AsString:=Edit1.Text;
DataM.IBDataSet1.Post;


El campo1 es de tipo char de 10

al compilar y ejecutar ingresar la información y pulsar el boton grabar nos da el mensaje

Field 'campo1' no found


como hacemos o en que podemos fallar

agradecemos su ayuda de antemano

vtdeleon
07-08-2006, 20:30:08
Ese error me indica que en la tabla no existe campo llamando "campo1".

Como se llama el campo llave?

Esta es la sentencia real que tienes en el Dataset??
INSERT INTO TABLA1 (CAMPO1, CAMPO2, CAMPO3) VALUES (:CAMPO1, :CAMPO2, :cAMPO3)

servicomp
07-08-2006, 21:58:52
Si claro el campo1 es el campo llave, y si se encuentra en la tabla, pero cabe preguntar si es diferente la forma de pasar la información si es campo llave o si no campo llave.

Agradeciendo la respuesta

vtdeleon
07-08-2006, 23:16:09
Ok, ya veo el problema.

Tienes una sentencia de Inserción en SelectSQL, entonces no puedes usar el método Append del dataset para tal caso.

Haz esto:
DataM.IBDataSet1.Close;
DataM.IBDataSet1.ParamByName('campo1').AsString:=Edit1.Text;
DataM.IBDataSet1.ParamByName('campo2').AsString:=ValorParaCampo2
DataM.IBDataSet1.ParamByName('campo3').AsString:=ValorParaCampo3
DataM.INDataSet1.ExecSql;
//DataM.IBDataSet1.Append;
Edit1.SetFocus;

servicomp
07-08-2006, 23:55:23
te agradezco, rerevizare cunado este de nuevo en mi oficina y te aviso como me fue por este medio