Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-09-2013
nefore nefore is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 25
Poder: 0
nefore Va por buen camino
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;
A lo cual me salta el siguiente error: "El proveedor actual no admite que una única ejecución devuelva múltiples recordsets".

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;
En el cual en la linea de codigo que resalte me pide un parametro de tipo UpdateKind, pero nose que poner, busque algo respecto al parametro y no encontre nada...

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


La franja horaria es GMT +2. Ahora son las 17:29:26.


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