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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-11-2007
Pitilingorri Pitilingorri is offline
Miembro
 
Registrado: ene 2007
Posts: 18
Poder: 0
Pitilingorri Va por buen camino
Problema con el UpdateSQL

Tengo una base de datos en interbase, sobre la que trabaja una aplicacion en delphi cuatro.
La cuestion es que he añadido un campo nuevo a la tabla, y al hacer un update/insert me da problemas. Antes de añadir ese campo me hacia las actualizaciones sin ningun problema.

La tabla en cuestión, llamada obra, tiene la siguiente estructura:


CODIGOOBRA INTEGER NOT NULL, (Clave de la tabla)
CODIGOCLIENTE INTEGER, (Clave que hace referencia a una tabla llamada cliente)
NULA VARCHAR(1),
DIRECCION VARCHAR(60),
POBLACION VARCHAR(20),
CODIGOPOSTAL VARCHAR(5),
NUMEROTELEFONO1 VARCHAR(15),
NUMEROTELEFONO2 VARCHAR(15),
FECHAOBRA DATE,
MEDIRFECHA DATE,
MEDIRHORA VARCHAR(5),
MEDIDOPOR VARCHAR(20),
IVA FLOAT,
OBSERVACIONES VARCHAR(2000),
PROVINCIA VARCHAR(20),
CODIGOEMPRESACONT INTEGER (Este es el nuevo campo que he añadido)

Para añadir el nuevo campo, entre en el Update SQL editor y marco el campo "CodigoEmpresaCont" dentro de la lista de campos en la lista de Updatefields. Dentro de los campos DeleteSQL, InsertSQL y ModifySQL he puesto lo siguiente

INSERT:
insert into OBRA
(NULA, FECHAOBRA, CODIGOCLIENTE, DIRECCION, CODIGOPOSTAL,
POBLACION,
PROVINCIA, NUMEROTELEFONO1, NUMEROTELEFONO2, MEDIRFECHA,
MEDIRHORA,
MEDIDOPOR, IVA, CODIGOEMPRESACONT)
values
(:NULA, :FECHAOBRA, :CODIGOCLIENTE, IRECCION, :CODIGOPOSTAL,
:POBLACION,
:PROVINCIA, :NUMEROTELEFONO1, :NUMEROTELEFONO2, :MEDIRFECHA,
:MEDIRHORA,
:MEDIDOPOR, :IVA, :CODIGOEMPRESACONT)

DELETE:
delete from OBRA
where
CODIGOOBRA = :OLD_CODIGOOBRA

UPDATE
update OBRA
set
NULA = :NULA,
FECHAOBRA = :FECHAOBRA,
CODIGOCLIENTE = :CODIGOCLIENTE,
DIRECCION = IRECCION,
CODIGOPOSTAL = :CODIGOPOSTAL,
POBLACION = :POBLACION,
PROVINCIA = :PROVINCIA,
NUMEROTELEFONO1 = :NUMEROTELEFONO1,
NUMEROTELEFONO2 = :NUMEROTELEFONO2,
MEDIRFECHA = :MEDIRFECHA,
MEDIRHORA = :MEDIRHORA,
MEDIDOPOR = :MEDIDOPOR,
IVA = :IVA,
CODIGOEMPRESACONT = :CODIGOEMPRESACONT
where
CODIGOOBRA = :OLD_CODIGOOBRA

Siendo CodigoEmpresaCont el campo que he añadido

El SQL del query que he usado es el siguiente:

SELECT
OBRA.CodigoObra , OBRA.Nula,
OBRA.FechaObra ,
OBRA.CodigoCliente ,
CLIENTE.Nombre ,
OBRA.Direccion ,
OBRA.CodigoPostal , OBRA.Poblacion ,
OBRA.Provincia,
OBRA.NumeroTelefono1 ,
OBRA.NumeroTelefono2 ,
OBRA.MedirFecha ,
OBRA.MedirHora ,
OBRA.MedidoPor ,
OBRA.IVA,
OBRA.CodigoEmpresaCont,--->Campo que he añadido
CLIENTE.Direccion CDireccion,
CLIENTE.FechaAlta ,
CLIENTE.Poblacion CPoblacion,
CLIENTE.CodigoPostal CCodigoPostal, CLIENTE.Provincia CProvincia,
CLIENTE.DNINIF ,
CLIENTE.NumeroTelefono1 CNumeroTelefono1,
CLIENTE.NumeroTelefono2 CNumeroTelefono2,
CLIENTE.NumeroMovil CNumeroMovil,
CLIENTE.NumeroFax CNumeroFax


FROM
OBRA JOIN CLIENTE
ON ( OBRA.CodigoCliente = CLIENTE.CodigoCliente )

Y en el procedure QueryupdateRecord tengo lo siguiente:

var
AQuery: TQuery;
begin
AQuery := TQuery.Create(nil);
try
AQuery.DatabaseName := NombreBaseDatos;
case UpdateKind of
ukModify, ukInsert:
begin
if UpdateKind = ukModify then
AQuery.SQL.Text := UpdateSQL1.ModifySQL.Text
else
AQuery.SQL.Text := UpdateSQL1.InsertSQL.Text;

if DataSet.FieldByName('CodigoCliente').NewValue = Null then
AQuery.ParamByName('CodigoCliente').DataType := ftInteger
else
AQuery.ParamByName('CodigoCliente').AsInteger :=
DataSet.FieldByName('CodigoCliente').NewValue;

if DataSet.FieldByName('CodigoEmpresaCont').NewValue = Null then
AQuery.ParamByName('CodigoEmpresaCont').DataType := ftInteger
else
AQuery.ParamByName('CodigoEmpresaCont').AsInteger :=
DataSet.FieldByName('CodigoEmpresaCont').NewValue;



...

AQuery.ParamByName('Observaciones').Value :=
MemoObra.Lines.Text;


AQuery.ParamByName('CodigoObra').AsInteger :=
DataSet.FieldByName('CodigoObra').NewValue;


end;
ukDelete:
begin
AQuery.SQL.Text := UpdateSQL1.DeleteSQL.Text;
AQuery.ParamByName('CodigoObra').AsInteger :=
DataSet.FieldByName('CodigoObra').OldValue;
end;
end;
AQuery.ExecSQL;
UpdateAction := uaApplied;
finally
AQuery.Free;
end;
end;

He mirado algún hilo que habla sobre el tema, pero sigo sin ver donde esta el fallo...haber si vosotros podeis ayudar, porque yo no lo pillo. Gracias de antemano por vuestra ayuda.
Responder Con Cita
 



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
UpdateSQL Pekador MySQL 4 26-09-2007 23:02:45
updateSQL mjjj Conexión con bases de datos 6 03-05-2007 02:40:33
control UpdateSQL con ADO? FlacoNet Conexión con bases de datos 3 28-03-2007 17:27:27
Componente Updatesql ebeltete SQL 6 24-06-2004 19:09:43
UpdateSQL y CachedUpdates fjolivares Conexión con bases de datos 2 11-03-2004 20:49:02


La franja horaria es GMT +2. Ahora son las 13:50:54.


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