Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    64

    [VB6] Controllo ADODC e DB Access con Password

    Ciao ragazzi.

    Per la connessione ad un DB Access protetto da password, modifico la stringa di connessione dell'ado, e si connette senza problemi.

    Ciò che volevo fare io era poter cambiare questa stringa "al volo".
    Ho fatto alcune prove, ma senza successo.

    L'idea era quella di modificare la stringa prima che i controlli Adodc cercassero di connettersi al database, ma questo pare non essere possibile (come se i controlli venissero attivati prima di qualsiasi altra attività programmata da me).

    Qualcuno ha idea di come impostare la password di connessione "al volo", senza utilizzare la stringa di connessione memorizzata di base nel controllo?

    Per capirci, quello che voglio ottenere è:
    - avvio il programma
    - mi appare un dialog in cui inserire la pw
    - una routine assegna la password digitata ai controlli adodc del programma (assegnando le corrette stringhe di connessione)
    - il programma si connette al database

    PS: Ho provato una ricerca sul forum, ma senza risultato!
    La risposta è dentro di te...
    ... e però, è sbagliata!

  2. #2
    codice:
    stringa_connessione = ".............user=" & text_user.text & "password=" & text_pwd.text"
    prude il dito, lui sdraiato
    ha giocato a guardie e ladri col ladro sbagliato

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    64
    grazie della risposta!

    Il problema però non è comporre correttamente la stringa di connessione.
    Se inserisco la stringa nel controllo dalla sua interfaccia, questo si connette senza problemi ad DB con password.

    Il problema sta nel fatto che con adodc non riesco a modificare questa stringa a programma avviato senza ottenere un errore, o non riesco a assegnare la stringa al controllo da codice prima che questo tenti di connettersi comunque al database (dandomi quindi errore di pw non valida).
    La risposta è dentro di te...
    ... e però, è sbagliata!

  4. #4
    chiudi la connessione e poi la riapri con i dati modificati
    prude il dito, lui sdraiato
    ha giocato a guardie e ladri col ladro sbagliato

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    64
    già tentato, ma niente da fare.
    Quando faccio il refresh dell'adodc, mi dice "Gli argomenti non sono di tipo valido, non sono compresi nell'intervallo o sono in conflitto".

    Giusto per completezza, le due stringhe sono (si connette con entrambe):

    codice:
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ip-db.mdb;Persist Security Info=False
    
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ip-db_pw.mdb;Persist Security Info=True;Jet OLEDB: Database Password=password

    In ogni caso anche questa soluzione non è un po' bruttina:
    mi costringe a connettermi prima ad un database fittizio, e poi a passare la connessione al database protetto (o sbaglio?).

    L'ideale sarebbe poter modificare la password prima che prima che l'adodc instauri la sua prima connessione. Qualche suggerimento?
    La risposta è dentro di te...
    ... e però, è sbagliata!

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa ... ma non comprendo ...

    1) L'ADODC deve avere la proprieta' ConnectionString vuota

    2) Tu la riempi da codice come vuoi

    3) Esegui un refresh dell'ADODC


    Qual e' il problema?

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    64
    piccola correzione...
    Sono riuscito a modificare la stringa di connessione, avevo fatto un piccolo errore nel copiaincolla della stringa con pw funzionante (c'era un parametro in più che doveva essere saltato fuori smanettando le varie opzioni dell'adodc).

    Quindi il barbatrucco funziona, ma è davvero pessimo:
    al momento sto facendo connettere gli adodc ad un database senza pw, quindi modifico la stringa e li faccio connettere a quello con password.

    Il fatto è che non riesco a modificare la stringa prima che i controlli adodc facciano almeno un tentativo di connessione (che a quanto pare fanno appena si avvia il programma).
    Se il tentativo fallisce, appaiono una serie di avvisi e il programma muore... e da qui il barbatrucco del database senza password vuoto. Ma è una schifezza...
    La risposta è dentro di te...
    ... e però, è sbagliata!

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    158
    Ma perchè tu colleghi i controlli all'adodc in design time!

    Comunque sia, è necessasrio che tu non usi nessun controllo collegato ad adoc nella form in cui richiedi User e Password.
    Quando l'user preme il tasto di conferma tu carichi la form che contiene i campi collegati ad adodc passandole due parametri stringa che userai per modificare la stringa di connessione, la riga successiva richiami il controllo adodc e setti la proprietà connectionString con la nuova stringa di connessione.

    Se viene restituito un errore(o un'eccezione, non ho capito che lang usi) di login incorretto lo intercetti e fai apparire una msgbox o quello che vuoi... poi fai ripetere il login.
    DISCLAIMER
    quello che sta scritto qui sopra è dettato esclusivamente dall'intuito, non da specifiche conoscenze tecniche. Usate queste informazioni a vostro rischio e pericolo (anhe sui server di produzione

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    64
    Temo dovrai avere un poì di pazienza, e magari il buon cuore di spiegarmi qualcosa

    Dunque... ok, a quanto pare collego i controlli all'adodc in "design time": posso fare altrimenti?
    Banalmente mi verrebbe in mente di non associarli, e quindi di settare l'associzione da codice dopo aver modificato la stringa.
    Bella fregatura, era così comodo averli già associati!
    Esiste altrimenti qualche settaggio che non ho notato per collegarli in un momento diverso dal "design time"?

    Altro punto è il caricamento dei form.
    I form sono child di un MDIForm, e vengono caricati all'inizio: sta qui il problema.
    I form vengono caricati, e gli adodc mi richiedono la connessione. Quelli connessi ad un certo controllo associato, per lo meno.

    L'errore viene intercettato nella sub che fa il refresh degli adodc dopo il cambiamento della stringa di connessione, anche se un msgbox di errore generato dall'adodc stesso mi appare a prescindere (a proposito... un modo per nonfarlo apparire c'è?)

    PS: il linguaggio che sto usando, come da tag, è vb6.
    La risposta è dentro di te...
    ... e però, è sbagliata!

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    158
    non hai ancora dato descrizione dell'errore

    mah, non saprei perchè non ho mai usato le proprietà di binding dei conrolli(binding è quella cosa epr cui i controlli si collegano da soli al database, messa giù pari pai ) ma, in teoria, se nel codice del form MDI padre non metti riferimenti al database tramite adodc puoi fare quello che vuoi prima che l'applicazione si connetta effettivamente al database...

    In due parole, nel codice del form mdi non deve comparire nessun riferimento al database, e nessun controlli che utilizzi il database.

    Quando invece caricherai un form(tramite Load) che usa controlli collegati al db, sarà in quel momento che verrà aperta una connessione al database, e tu non devi far altro che associare la stringa di connessione un attimo prima che avvenga...un attimo prima significa nell'evento load del form.
    DISCLAIMER
    quello che sta scritto qui sopra è dettato esclusivamente dall'intuito, non da specifiche conoscenze tecniche. Usate queste informazioni a vostro rischio e pericolo (anhe sui server di produzione

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.