PDA

Ver la Versión Completa : Modo de insertar nuevos registros y HOLA


nachito_tuc
27-07-2006, 23:08:51
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 (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
Un ejemplo de como lo haces tu en vb ... pero en 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:


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
Saludos. Mira, yo encuentro mas facil hacerlo asi:

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
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.


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:

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