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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-07-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Me pregunto si tus tablas siempre estan abiertas, de ser así es necesario que trates de mantener cerradas las tablas hasta que realizas una operación de insertar, borrar, actualizar.

Con eso minimizaras los problemas de corrupcion de tablas, ademas de lo ya mencionado de tener un UPS.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #2  
Antiguo 03-08-2007
tarco35 tarco35 is offline
Miembro
 
Registrado: sep 2003
Posts: 210
Poder: 23
tarco35 Va por buen camino
Question Aun Asi

Disculpen la tardanza pero he tenido un problemilla de conexion a internet... El caso es que las tabla, no todas, pero si algunas han de estar permanentemente abiertas porque la aplicacion tiene que realizar apuntes de cronometros y cosas así.... por ahora la solucion que he aportado ha sido poner un UPS y ponerle al programa una opcion de cerrado de emergencia, que guarda todos los vectores de datos antes de salir y cierra las tablas... Pero evidentemente no es solucion definitiva ¿Alguien conoce alguna forma de reconstruir este autoincremental siendo llave primaria de la tabla?
Gracias por su colaboracion
Responder Con Cita
  #3  
Antiguo 03-08-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por tarco35 Ver Mensaje
Disculpen la tardanza pero he tenido un problemilla de conexion a internet... El caso es que las tabla, no todas, pero si algunas han de estar permanentemente abiertas porque la aplicacion tiene que realizar apuntes de cronometros y cosas así.... por ahora la solucion que he aportado ha sido poner un UPS y ponerle al programa una opcion de cerrado de emergencia, que guarda todos los vectores de datos antes de salir y cierra las tablas... Pero evidentemente no es solucion definitiva ¿Alguien conoce alguna forma de reconstruir este autoincremental siendo llave primaria de la tabla?
Gracias por su colaboracion
Me imagino que usas un tipo Timer para ingresar datos a las tablas, porque no usar el evento onTimer para grabar en la tabla, de esa forma no tienes porque tener abiertas las tablas.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #4  
Antiguo 05-08-2007
tarco35 tarco35 is offline
Miembro
 
Registrado: sep 2003
Posts: 210
Poder: 23
tarco35 Va por buen camino
Question Es por USB

Los datos que tengo que anotar y cronometrar los adquiero a traves del puerto USB y despues de decodificarlos hago los apuntes necesarios... reitero mi pregunta... ¿se puede reconstruir el autoincremental de una tabla?
Gracias
Responder Con Cita
  #5  
Antiguo 06-08-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 23
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
  #6  
Antiguo 12-08-2007
tarco35 tarco35 is offline
Miembro
 
Registrado: sep 2003
Posts: 210
Poder: 23
tarco35 Va por buen camino
Thumbs up Lo pruebo

gracias por el codigo... voy a probarlo a ver como va.... gracias de nuevo
Responder Con Cita
Respuesta


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 16:42:24.


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