Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Modo de insertar nuevos registros y HOLA (https://www.clubdelphi.com/foros/showthread.php?t=34131)

nachito_tuc 27-07-2006 23:08:51

Modo de insertar nuevos registros y HOLA
 
Hola. Soy nuevo en este foro y tambien en Delphi. Vengo de programar en Visual Basic y la verdad me esta dando un poco de dolor de cabeza el tema de las bases de datos.

Mi duda es la siguiente: hay en Delphi otro modo de insertar registros en una base de datos que no sea a traves del Insert de SQL?
(Como los recordset de VB que tienen un metodo AddNew y luego se reemplaza cada campo con el dato y se hace un rs.update).

y para actualizar como hago con campos edit comunes? traté de asignarle a cada campo (
Código:

query1.fieldbyname('campo').AsString=edit1.text
)
pero me dice q son de solo lectura, probe poner antes query1.edit o cosas asi pero no pude hacerlo funcionar :( alguna sugerencia?

Saludos y muchas gracias.

Nacho

marcoszorrilla 27-07-2006 23:31:58

En Delphi tienes Append y Edit, pero primero hace falta que la consulta sea actualizable, RequestLive = True.

Un Saludo.

mierda 28-07-2006 08:15:27

prueba con esto ...
 
Un ejemplo de como lo haces tu en vb ... pero en delphi:

Código Delphi [-]
nombredatamodule.nombretabla.Active := true;
nombredatamodule.nombretabla.Append;
nombredatamodule.nombretabla.fieldbyname('idreceptor').AsString := nombre_usuario;
nombredatamodule.nombretabla.fieldbyname('idremitente').AsString := copy(texto_rec,0,posicion-1);
nombredatamodule.nombretabla.fieldbyname('texto').AsString := copy(texto_rec,posicion+2,length(texto_rec));
nombredatamodule.nombretabla.fieldbyname('fechahora').AsString := DateTimeToStr(now);
nombredatamodule.nombretabla.Post;
nombredatamodule.nombretabla.Active := false;

Un saludo.

cuburu 28-07-2006 22:42:19

Solo por complementar el ejemplo que se encuentra posteado por mi camarada "shit" :). te recomiendo que utilices el comando commit en lugar del post. esto debido a que en multiples ocasiones tuve problemas de actualización de datos debido a la utilización de POST. en resumen, el código quedaría algo como esto:

Código Delphi [-]
with nombredatamodule.nombretabla do
begin
  Active := true;
  Append;
  fieldbyname('idreceptor').AsString := nombre_usuario;
  fieldbyname('idremitente').AsString := copy(texto_rec,0,posicion-1);
  fieldbyname('texto').AsString := copy(texto_rec,posicion+2,length(texto_rec));
  fieldbyname('fechahora').AsString := DateTimeToStr(now);
  Commit;
  Active := false;
end;

Te coloco el código de esta forma porque supongo que te es más fácil comprenderlo debido a que en VB se usan sentencias similares.

Suerte.

alastor 31-07-2006 19:06:49

Otra manera
 
Saludos. Mira, yo encuentro mas facil hacerlo asi:
Código Delphi [-]
Nombre_Tabla.insert;
Nombre_Tabla_Nombre_Campo.asString:=Edit1.text;//El nombre del campo va seguido del nombre de la tabla, y lo que sigue despues le dira a delphi como que tipo de dato tu lo quieres usar
Nombre_Tabla_Nombre_Campo.asInteger:=strtoint(Edit2.text);
Nombre_Tabla.post;
Espero que te sea mas facil a la hora de trabajar. Saludos.

PepeLolo 01-08-2006 13:13:08

Cita:

Empezado por nachito_tuc
Hola. Soy nuevo en este foro y tambien en Delphi. Vengo de programar en Visual Basic y la verdad me esta dando un poco de dolor de cabeza el tema de las bases de datos.

Delphi es muchismo más simple que VB, es posible que por ello, por simpleza te resulte más dificil. Es como el ladrón que va directamente a la caja fuerte sin percatarse que la pasta esta sobre la mesa medio tapada por un papel.

Cita:

Empezado por nachito_tuc
Mi duda es la siguiente: hay en Delphi otro modo de insertar registros en una base de datos que no sea a traves del Insert de SQL?
(Como los recordset de VB que tienen un metodo AddNew y luego se reemplaza cada campo con el dato y se hace un rs.update).
Nacho

Es muy posible que no necesites escribir una sola línea de código para realizar cualquier tipo de actualización (insert, update, delete). Los componentes de acceso a datos de delphi te lo resuelven ellos solitos, si el TQuery (en este caso) esta conectado a campos DataWare (TDBEDit, TDBxxx), si usas componentes no DataWare, entonces la asignación la tienes que hacer a manita como en VB.

Todo Componente que desciende de TDataSet (TQuery, TTable), implementan metodos para la inserción, modificación, borrado (TuQuery.Append/Insert, TuQuery.delete, TuQuery.edit).

Pones un TQuery en tu formulario, la propiedad "RequestLive = True" y en la propiedad "SQL", una sentencia SQL de lectura de datos:

Ejemplo:
Código Delphi [-]
  QMto.RequestLive := True;    // Habilita al componente TQuery realizar Insert, Update, Delete.
  QMto.sql.Add('SELECT * FROM HABI_PROVEEDORES');
  QMto.Open;

espero te sirva, un saludo


La franja horaria es GMT +2. Ahora son las 17:06:19.

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