Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-06-2011
martita martita is offline
No confirmado
 
Registrado: jun 2005
Posts: 146
Poder: 0
martita Va por buen camino
como agregar registro nuevo en firebird

hola foro, ya genere en ibexpert mi base de datos con 3 campos
codigo, nombre, telefono el primer campo es el indice
dentro de ibexpert si logro agregar campos con insert into new_table etc, etc, el detalle es con delphi, genere un data module con un ibdatabase y ibtransaction, en una form tengo un dbgrid y un ibquery1 con el cual por medio de un datasource muestro mis datos contenidos en mi tabla new_table, hasta aqui todo bien si me muestra los datos contenidos en la tabla, pero al momento de activar un boton que puse para agregar un nuevo registro me marca error le mando los datos contenidos en unos edit , aqui esta el codigo
Código Delphi [-]
  with ibquery1 do 
  begin
    close;
    sql.clear;
    sql.Add('insert into new_table (codigo, nombre, telefono');
    sql.Add(' VALUES(:xcodigo, :xnombre, :xtelefono) ');
    ParamByName('Xcodigo').Asinteger:=strtoint(edit1.text);
    ParamByName('Xnombre').Asstring:=edit2.text;
    ParamByName('Xtelefono').Asstring:=edit3.text;
    execsql;
  end;
me marca el error: sql error code = 104
token unknown line 2 col. 2
values'. process stopped use stop or run to continue


Última edición por ecfisa fecha: 11-06-2011 a las 21:18:07. Razón: Etiquetas [DELPHI] [/DELPHI]
Responder Con Cita
  #2  
Antiguo 11-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola martita.

El error aparece por que te está faltando cerrar un paréntesis:
Código Delphi [-]
  with ibquery1 do 
  begin
    close;
    sql.clear;
    sql.Add('insert into new_table(codigo, nombre, telefono)');   // <- aca (en rojo)
    sql.Add(' VALUES(:xcodigo, :xnombre, :xtelefono) '); 
    ParamByName('Xcodigo').Asinteger:=strtoint(edit1.text);
    ParamByName('Xnombre').Asstring:=edit2.text;
    ParamByName('Xtelefono').Asstring:=edit3.text;
    execsql;
  end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 11-06-2011 a las 21:24:33.
Responder Con Cita
  #3  
Antiguo 11-06-2011
martita martita is offline
No confirmado
 
Registrado: jun 2005
Posts: 146
Poder: 0
martita Va por buen camino
Smile ok ya graba y no marca error

gracias efisa por tu ayuda, ahora lo unico que noto es que no graba los
datos fisicamente hasta que cierrro mi aplicacion osea hasta que hago close
a mi database, hay alguna manera que grabe en firme o al instante ?
por que localmente no afecta pero si tengo una sistema ya multiusuario
me afectaria muchisimo esto por ejemplo si alguien da de alta al sistema un nuevo cliente, los demas no lo podrian ver en el catalogo de clientes, hasta que el que dio de alta ese nuevo registro en el catalogo de clientes cierre y abra su sistema para que guarde el registro fisicamente, esto seria fatal, como podria asegurarse que haga las transacciones en firme o al instante ?

saludos.
Responder Con Cita
  #4  
Antiguo 11-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola martita.

Para consolidar la escritura de los datos, luego de hacer ExcecSQL, tenés que usar: IBTransaction.Commit ó IBTransaction.CommitRetaining.

La diferencia entre ambos métodos es que, luego de aplicar los cambios CommitRetaining mantiene activa la transacción. En cambio Commit cierra la transacción activa y luego hay que usar StartTransaction para iniciarla nuevamente.
La elección de un método u otro dependerá de lo que necesites efectuar, pero creo que para este caso te conviene CommitRetaining.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 13-06-2011
Avatar de lafourcade
lafourcade lafourcade is offline
Miembro
NULL
 
Registrado: ene 2011
Posts: 13
Poder: 0
lafourcade Va por buen camino
Hola

mira yo uso las siguientes lineas al finalizar el guardado

Código Delphi [-]
execsql;
      sql.Clear;
      sql.add('commit');
      execsql;

el primer execsql seria el que tu ya tienes, a mi m funciona muy bien.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Agregar un campo nuevo sidneyb SQL 5 10-04-2008 10:16:21
Como hacer que se limpie genere un nuevo registro en un formulario difesa Tablas planas 2 01-11-2006 15:07:49
Como envio un correo cuando se da de alta un nuevo registro solnaciente Internet 2 08-09-2006 15:06:03
Como sacar un solo registro con Firebird? El_Raso Firebird e Interbase 3 12-02-2006 16:19:44
Como Insertar Registro Nuevo ENTRE los demás Registros???? AGAG4 Conexión con bases de datos 1 18-01-2006 03:03:45


La franja horaria es GMT +2. Ahora son las 23:13:39.


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
Copyright 1996-2007 Club Delphi