Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    3

    Modificare il database di un alias ODBC run time

    Ciao a tutti,
    vorrei fare un applicazione in Delphi 7 che si connette ad un db access via ODBC che varia a seconda di cosa l'utente seleziona da una maschera di login.

    Cerco di spiegarmi meglio:
    La maschera di Login ha una Combo Box con i seguenti elementi (2006, 2007, 2008) ed esiste una cartella c:\db che contiene i diversi db access (2006.mdb, 2007.mdb, 2008.mdb), ho un unico DSN utente "AnnoDB" il cui database inizialmente punta al 2006.mdb ma vorrei che cambiasse run time a seconda dell'elemento che vado a selezionare dalla maschera di login, andando così a puntare a quello relativo.
    Se seleziono 2006 dalla combo al 2006.mdb, se seleziono 2008 al 2008.mdb

    Spero di essere stato chiaro.
    Sapete come si fa?
    Ah naturalmente voglio usare un solo DSN utente e no uno per ogni db.

    Grazie a tutti

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326

    Moderazione

    Il linguaggio va sempre specificato nel titolo della discussione.

    L'ho aggiunto io.

    Ad ogni modo, credo che tu debba utilizzare un approcio diverso. Non so come si faccia in Delphi (qualcuno ben più esperto di me ti saprà consigliare), ma ad esempio in Java, per collegarsi ad un DB utiilzzando un bridge ODBC, è necessario passare al driver i seguenti parametri:
    codice:
    DRIVER=Microsoft Access Driver (*.mdb),
    DBQ=percorso_al_db
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    52
    Io ho un problema simile, in pratica come si fa a creare un database runtime? Sempre in delphi 7(o in delphi 2009 se preferite). grazie anticipatamente

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

    Moderazione

    Originariamente inviato da Gfff
    Io ho un problema simile, in pratica come si fa a creare un database runtime? Sempre in delphi 7(o in delphi 2009 se preferite). grazie anticipatamente
    Il problema non è analogo, ma è diverso: per ogni domanda, occorre aprire una discussione separata, a meno che da una ricerca non si individui già la soluzione.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    52

    Re: Moderazione

    Originariamente inviato da alka
    Il problema non è analogo, ma è diverso: per ogni domanda, occorre aprire una discussione separata, a meno che da una ricerca non si individui già la soluzione.
    Scusa ok

  6. #6
    ciao,

    io semplicemnte ho fatto in questo modo creando una procedura richiamabile da pulsante o tramite un evento:

    Codice PHP:


    procedure TForm1
    .open_database(SorgenteDati:string);
    var 
    DirExtstring;
    begin
      with ADOConnection 
    do
        
    begin
          SorgenteDati
    := 'myDB2.mdb';

          if 
    not FileExists(SorgenteDatithen
            begin
              
    if Application.MessageBox('Database: ' '',
                    
    'Errore grave'MB_ICONQUESTION MB_YESNO) = IDYES then
                begin
                  Application
    .Terminate(); 
                
    end;

              
    end;



          
    Provider:='Microsoft.Jet.OLEDB.4.0';

          
    ConnectionString:=
            
    'Provider=Microsoft.Jet.OLEDB.4.0;' +
            
    //'User ID=' +
            //'Password="";' +
            
    'Data Source='SorgenteDati ';'+
            
    'Mode=ReadWrite;' +
            
    'Extended Properties="";' +
            
    'Persist Security Info=True;' +
            
    'Jet OLEDB:System database="";' +
            
    'Jet OLEDB:Registry Path="";' +
            
    'Jet OLEDB:Engine Type=5;' +
            
    'Jet OLEDB:Database Locking Mode=1;' +
            
    'Jet OLEDB:Global Partial Bulk Ops=2;' +
            
    'Jet OLEDB:Global Bulk Transactions=1;' +
            
    'Jet OLEDB:New Database Password="";' +
            
    'Jet OLEDB:Create System Database=False;' +
            
    'Jet OLEDB:Encrypt Database=False;' +
            
    'Jet OLEDB:Don'#39't Copy Locale on Compact=False;' +
            
    'Jet OLEDB:Compact Without Replica Repair=False;' +
            
    'Jet OLEDB:SFP=False';

          
    LoginPrompt := False;
          
    Connected:=true;
          
    mode:=cmReadWrite;

         
    Open('','');
        
    end;

      
    ADOQuery.Active:=true;
    end

    utilizzo una ADOConnection senza driver ODBC
    IMPOSSIBLE IS NOTHING - LOOK BEFORE YOU LEAP !!!

  7. #7

    errata corrige

    ti segnalo che la stringa di connessione in rosso è stata interpretata , quindi sono state aggiunti dei tag che fanno riferimento ad immagini .gif.

    ti rimetto il codice in forma diversa, ma dovrai comunque sostiuire le emoticons in verde con la sequenza di caratteri "due punti" e "D".

    codice:
    procedure TForm1.open_database(SorgenteDati:string);
    var Dir, Ext: string;
    begin
      with ADOConnection do
        begin
          SorgenteDati:= 'myDB2.mdb';
    
          if not FileExists(SorgenteDati) then
            begin
              if Application.MessageBox('Database: ' + '',
                    'Errore grave', MB_ICONQUESTION + MB_YESNO) = IDYES then
                begin
                  Application.Terminate(); 
                end;
    
              end;
    
    
    
          Provider:='Microsoft.Jet.OLEDB.4.0';
    
          ConnectionString:=
            'Provider=Microsoft.Jet.OLEDB.4.0;' +
            //'User ID=' +
            //'Password="";' +
            'Data Source='+ SorgenteDati + ';'+
            'Mode=ReadWrite;' +
            'Extended Properties="";' +
            'Persist Security Info=True;' +
            'Jet OLEDB:System database="";' +
            'Jet OLEDB:Registry Path="";' +
            'Jet OLEDB:Engine Type=5;' +
            'Jet OLEDB:Database Locking Mode=1;' +
            'Jet OLEDB:Global Partial Bulk Ops=2;' +
            'Jet OLEDB:Global Bulk Transactions=1;' +
            'Jet OLEDB:New Database Password="";' +
            'Jet OLEDB:Create System Database=False;' +
            'Jet OLEDB:Encrypt Database=False;' +
            'Jet OLEDB:Don'#39't Copy Locale on Compact=False;' +
            'Jet OLEDB:Compact Without Replica Repair=False;' +
            'Jet OLEDB:SFP=False';
    
          LoginPrompt := False;
          Connected:=true;
          mode:=cmReadWrite;
    
         Open('','');
        end;
    
      ADOQuery.Active:=true;
    end;
    
    
    
    
    utilizzo una ADOConnection senza driver ODBC
    IMPOSSIBLE IS NOTHING - LOOK BEFORE YOU LEAP !!!

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.