Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #13  
Antiguo 06-08-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 22
basti Va por buen camino
Este código es para reparar los campos Autonuméricos en paradox. El procedimiento ActualizarAutoInc es cortesía de Román.

Código Delphi [-]

procedure ResetAutoinc(Tabla: TTable);

  function HayAutoinc : string;
  var
    i : Integer;
  begin
    Result := '';
    i := 0;
    while (i < Tabla.FieldCount) and (Result = '')  do
    begin
      if Tabla.Fields[i].DataType = ftAutoinc then
        Result := Tabla.Fields[i].FieldName;
      i := i + 1;
    end;
  end;

  function ValorAutoinc(campo : string) : Integer;
  var
    q : TQuery;
  begin
    q := TQuery.Create(self);
    q.DatabaseName := Tabla.DatabaseName;
    q.SQL.Add(format('Select max(%s) as result from %s', [campo, Tabla.TableName]));
    q.Active := True;
    Result := q.FieldByName('result').AsInteger;
  end;

  procedure ActualizarAutoinc(valor : Integer);
  var
    mystream : tfilestream;
    AParams : TStringList;
    dir : string;
  begin
    AParams := TStringList.Create;
    AParams.Clear;
    Session.GetAliasParams(Tabla.DatabaseName, AParams);
    Dir := Copy(AParams.Strings[0],6,255);
    if dir[length(dir)] <> '\' then
      dir := dir + '\';
    AParams.Free;

    mystream := tfilestream.Create(dir + tabla.TableName,
                fmOpenWrite + fmShareExclusive);
    try
      mystream.Seek(73, soFromBeginning);
      mystream.Writebuffer(valor, SizeOf(valor));
    finally
      mystream.Free;
    end;
  end;

var
  valor : Integer;
  campo : string;
begin
  try
    Tabla.Active := True;
    campo := HayAutoinc;
    if campo <> '' then
    begin
      valor := ValorAutoinc(campo);
      Tabla.Active := False;
      ActualizarAutoinc(valor);
    end;
  finally
    if Tabla.Active then
      Tabla.Active := False;
  end;
end;
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
La instruccion "optimize" tambien puede reparar tablas?? ctronx MySQL 0 19-05-2005 17:36:14
Reparar Paradox pruz Conexión con bases de datos 2 11-11-2004 19:07:50
Reparar Tablas Mysql pruz Conexión con bases de datos 5 27-10-2004 19:59:13
Como reparar tablas tipo Innodb ctronx MySQL 1 19-08-2004 01:21:51
Saber si mi prog. se cerro bien para reparar tablas ( paradox ) jealousy Conexión con bases de datos 3 29-05-2004 18:34:21


La franja horaria es GMT +2. Ahora son las 21:08:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi