Insertar datos en una base de datos

Soy un novato totalmente en esto de delphi, así que me disculpo si te hago muchas preguntas sobre algún tema que me hayas explicado, pero realmente quiero entender este lenguaje de programación, mi preocupación es la siguiente tengo dos formularios> form1 y form2.
En el form1 tengo un dbgrid que voy a utilizar para visualizar mis datos y dos botones uno llamado insertar y otro eliminar. En el que estoy trabajando es en el primero (insertar), mi base de datos es en sql, mi base de datos se llama modelo y la tabla que le he creado registro. Lo que pretendo es que cuando de un clic en el botón insertar (que esta en el form1) me llame al form2 que es donde voy a ingresar los datos que se guardaran en la base de datos y que se visualicen cuando los ingrese en el dbgrid (el form2 tiene los botnoes aceptar y cancelar) también en el form2 tengo dos dbedit uno llamado código y otro nombre. En el form1 que es donde esta el dbgrid le he puesto un datasource para ver los datos y en el form2 un datasource y un table para enlazarlo con la base de datos, pero me da error porque no logro ingresar datos a través del form2 en la base de datos cuando doy en el botón aceptar, ademas de que creo que no he clocardo bien el código para hacerle un llamado a la tabla para que se ponga en modo de diseño. Realmente necesito mucha

1 Respuesta

Respuesta
1
No entendí muy bien, pero con lo que alcance a entender intentare responder...
Podrías ligar tanto el dbgrid del form1, como los dbedits del form2 al mismo datasource, así al realizar la inserción se vera reflejada automáticamente en el dbgrid.
El código en el botón insertar del form1 podría ser algo así:
table.Append;
form2.show;
Y el código del botón aceptar del form2 podría ser:
table.post;
form2.close;
Dependdiendo de donde se encuentra el componente table, debes indicar la forma donde se encuentra (por ejem si esta en el form1 debes poner en el botón aceptar del form2: form1. Table. post;  )
Gracias por ir aclarándome un poco todo esto pero realmente soy un poco lento en todo esto. Este es el código que estoy utilizando para tratar de insertar datos
(Este esta en el form1 y es para llamar al form2)
begin
form2.showmodal;
/////////
(Este código esta en el form2que es donde inserto los datos)
var
form1: tform;
begin
table1.Edit;
table1.Insert;
if table1.State=dsedit then
modalresult:= mrok;
begin
table1.post;
modalresult:= mrok;
end;
end;
Lo que estoy haciendo es intentar insertar datos en mi base de datos haciendo que el form2 edite para insertar un nuevo registro y grabe la información en la base de datos, pero el problemas es que cuando trato de ingresar la información me sobre escribe el primer dato que tengo en la base de datos y después es que va agregando nuevos campos para los otros datos. Realmente esta todo esto mal, o debo hacer que cuando llame al form2 desde el form1, el form1 inserte un nuevo registro y solo grabar usando el form2, realmente agradecería que me ayudaras.
Segun el codigo q muestras, estas usando las dos instrucciones Edit e Insert... solo debes usar una de las dos...
Si vas a "insertar" datos basta con poner table1. insert. (La instrucción table1. Append realiza lo mismo, pero la inserción la hace al final de la tabla; mientras que el table1. insert lo hace en el registro donde te  encuentras ubicado agregando ahi un registro).
Aquí no entiendo realmente que intentas hacer:
if table1.State=dsedit then
modalresult:= mrok;
begin
table1.post;
modalresult:= mrok
yo creo que podiras hacer esto:
if table1.state in [dsedit, dsinsert] then //valida si esta editando o insertando en la tabla
begin
  table1.post;
  modalresult := mrok;
end;
¿Estas escribiendo en el mismo botón el código para insertar y guardar? Porque así no funciona, al mostrar el form2 debes poner la instrucción table. Insert... y en el boton guardar poner el table. Post...
Hermano gracias por las aclaraciones si supieras que me has ayudado muchísimo, con la primera aclaración que me diste entendí que a través del form1 tengo que poner en modo de insertar a la base de datos y que en el form2 debo insentar los datos, te doy la puntuación excelente porque a través de las respuestas que me diste al comienzo logre realizar el código para insertar. Gracias a ti modifique el código y puede hacerlo igual que la ultima linea de código que me has facilitado. Hermano realmente te lo agradezco de todo corazón y estoy muy agradecido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas