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

Respuesta
 
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
  #2  
Antiguo 25-09-2013
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 25-09-2013
nefore nefore is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 25
Poder: 0
nefore Va por buen camino
Cita:
Empezado por ElDioni Ver Mensaje
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.
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
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
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 15:37:22.


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