FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Consulta de Actualizacion
Saludos, estoy con pequeño problema veran tengo que realizar una actualizacion en una BD de Access 2010.
En Delphi, intente lo siguiente: Código:
procedure TForm1.consulta_mantenimiento; const connstring = 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\proyect\dbaccess1.accdb;Persist Security Info=False '; sql1 = 'UPDATE Propietarios INNER JOIN Mascotas ON Propietarios.CODIGO_TITULAR = Mascotas.CODIGO_PROPIETARIO SET Propietarios.BORRADO = No, Propietarios.FECHA_DE_MODIFICACION = Date()'; sql2 = 'WHERE (((DateDiff("m",Date(),[Mascotas].[FECHA_ALTA]))>-18));'; var ADOConn: TADOConnection; ADOQuery: TADOQuery; begin ADOConn:= TADOConnection.Create(Self); ADOConn.ConnectionString:= connstring; ADOConn.LoginPrompt:= False; try ADOConn.Connected := True; except on e: EADOError do begin MessageDlg('Error while connecting', mtError, [mbOK], 0); Exit; end; end; ADOQuery:= TADOQuery.Create(Self); ADOQuery.Connection:= ADOConn; ADOQuery.SQL.Clear; ADOQuery.SQL.Add(sql1+sql2); ADOQuery.Prepared:= True; try ADOQuery.Active := True; except on e: EADOError do begin MessageDlg('Error while doing query', mtError, [mbOK], 0); Exit; end; end; ADOQuery.ExecSQL; ShowMessage('Alta_Lógica realizada'); end; Pues en viendo esto, trate de utilizar el UpdateSQL, de la siguiente manera: Código:
procedure TForm1.consulta_mantenimiento; const connstring = 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\proyect\dbaccess1.accdb;Persist Security Info=False '; sql1 = 'UPDATE Propietarios INNER JOIN Mascotas ON Propietarios.CODIGO_TITULAR = Mascotas.CODIGO_PROPIETARIO SET Propietarios.BORRADO = No, Propietarios.FECHA_DE_MODIFICACION = Date()'; sql2 = 'WHERE (((DateDiff("m",Date(),[Mascotas].[FECHA_ALTA]))>-18));'; var ADOConn: TADOConnection; ADOQuery: TADOQuery; UpdateSQL: TUpdateSQL; begin ADOConn:= TADOConnection.Create(Self); ADOConn.ConnectionString:= connstring; ADOConn.LoginPrompt:= False; try ADOConn.Connected := True; except on e: EADOError do begin MessageDlg('Error while connecting', mtError, [mbOK], 0); Exit; end; end; ADOQuery:= TADOQuery.Create(Self); ADOQuery.Connection:= ADOConn; ADOQuery.SQL.Clear; ADOQuery.SQL.Add(sql1+sql2); ADOQuery.Prepared:= True; UpdateSQL:= TUpdateSQL.Create(Self); UpdateSQL.DataSet:= ADOQuery; UpdateSQL.ExecSQL(); ShowMessage('Alta_Lógica realizada'); end; Nota: Esta consulta ya la realize dentro de Access y funciona, asi que tome su codigo SQL y estoy intentando realizarla mediante un programa en delphi Desde ya muchas gracias por su tiempo Saludos! |
#2
|
||||
|
||||
Hola, creo que una ocasión me ocurrió esto que comentas y era poque no había definido una clave principal en la tabla.
Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta. |
#3
|
|||
|
|||
Hola gracias por responder!, ehm me he vuelto a fijar en las tablas y cada una tiene su clave principal. Lo que no sabria es si la relacion [Propietario].[CODIGO_PROPIETARIO] --> [Mascotas].[CODIGO_TITULAR] me esta causando problemas como dices. De ser asi, voy a necesitar realizar con otra componente puesto que la relacion en la consulta es necesaria para definir la condicion sobre "cuales" de los campos se va a actualizar
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Consulta de Actualizacion | orpare | SQL | 12 | 01-12-2011 16:24:34 |
Consulta de actualización | newtron | SQL | 3 | 06-07-2011 10:20:52 |
Consulta de actualización | newtron | SQL | 2 | 15-03-2011 11:18:52 |
Consulta de Actualizacion | tgsistemas | SQL | 2 | 03-08-2005 12:44:17 |
consulta y actualización | davidgaldo | Conexión con bases de datos | 1 | 23-06-2004 12:21:10 |
|