FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
Faltaría el campo persistente del Query.
doble clic sobre el componente TQuery, y en la ventana que se abre, boton derecho y Add Field, saldrá el nuevo campo de empresa, lo seleccionas y botón Add. No es tu caso, pero en futuras ocasiones, puede que no salga ningún campo nuevo, en ese caso, en delphi, pones el database.Connected a False, en el inspector de objetos, así como el transaction, después, vuelves al principio. Espero sea eso, porque lo demás está perfecto. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 14-11-2007 a las 14:07:13. |
#3
|
|||
|
|||
Cita:
Parece que tendre que seguir buscando hasta encontrar la solución, o a alguien se le ocurra una |
#4
|
|||
|
|||
Problema solucionado, tal como decia Lepe estaba todo perfecto...salvo una puñetera coma que me faltaba en una query, de la que no me habia dado cuenta al tener capturado el error. Vamos, que si soy más tonto nazco botijo . En fin, por lo menos esta cagadita me ha valido para leerme de cabo a rabo todo lo relativo al UpdateSQL que habia en este y en otros foros, y aprender más sobre este componente que no habia usado antes.
Un saludo. |
|
|
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 |
|