Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [Delphi] Database

  1. #1

    [Delphi] Database

    C'è un modo per sapere se un database è di Access 2000 o di Access 97.

    Sto usando ADO per compattare un database e so che JRO li differenzia con Engine Type 5 e 4 rispettivamente, il problema è appunto sapere quando mettere uno e quando mettere l'altro.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Re: [Delphi] Database

    Originariamente inviato da nic_sirio

    Sto usando ADO per compattare un database e so che JRO li differenzia con Engine Type 5 e 4 rispettivamente, il problema è appunto sapere quando mettere uno e quando mettere l'altro.
    JRO?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    in pratica ho seguito il consiglio che mi hai dato tu l'altra volta, in cui si importa la libreria JRO e poi su usa Jet Engine.

    ti copio la parte:

    procedure TfrmCRMMain.miCompattaClick(Sender: TObject);

    var
    Motore:IJetEngine;
    stError: String;
    VecchioNome, NuovoNome, Vecchio, Nuovo: WideString;
    n: Integer;

    begin
    n:=-1;
    stError:='';
    if Access 97 then QUI HO IL PROBLEMA!!
    n:=4;
    else if Access 2000 then
    n:=5;
    VecchioNome:=ExtractFileName(stDBcur);
    NuovoNome:='temp.'+ExtractFileName(stDBcur);
    Vecchio:='Provider=Microsoft.Jet.OLEDB.4.0;'+
    'Data Source='+VecchioNome+';'{+
    'Persist Security Info=False'};
    Nuovo:='Provider=Microsoft.Jet.OLEDB.4.0;'+
    'Data Source='+NuovoNome+';'{+
    'Persist Security Info=False';}+
    'Jet OLEDB:Engine Type='+n;

    try
    try
    CopyFile(PChar(stDBcur),PChar(stDBcur+'.prov'),Fal se);
    miChiudiClick(Self);
    Motore:=CoJetEngine.Create;
    Motore.CompactDatabase(Vecchio, Nuovo);
    Motore:=Nil;
    DeleteFile(VecchioNome);
    RenameFile(NuovoNome,VecchioNome);
    if InizializzaDb(VecchioNome, stError) then
    begin
    iStatoDb:=STATOLETTO;
    AbilitaSalvaChiudi(True);
    end
    except
    on E:Exception do
    begin
    Motore:=Nil;
    CopyFile(PChar(stDBcur+'.prov'),PChar(stDBcur),Fal se);
    stError:='Impossibile compattare il database: '+VecchioNome;
    end;
    end;
    finally
    if Assigned(Motore) then
    FreeAndNil(Motore);
    if FileExists(stDBcur+'.prov') then
    DeleteFile(stDBcur+'.prov');
    end;
    end;

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Purtroppo non so, lavoro molto poco con Access perchè prediligo altri gestori di database in ambito professionale.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.