Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    popolare una datagrid senza utilizzo dell'ado data control

    ciao
    potreste gentilmente indicarmi come fare per collegare una datagrid al database senza l'uso dell'ado data control in quanto in questo modo ho un percorso del database statico mentre da codice potrei indicare il percorso con la funzione apppach il linguaggio usato sè visual basic 6 spero che voi risolverete il mio problema a più presto

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244

    Re: popolare una datagrid senza utilizzo dell'ado data control

    Originariamente inviato da piero1991
    ciao
    potreste gentilmente indicarmi come fare per collegare una datagrid al database senza l'uso dell'ado data control
    Saggia decisione!
    In effetti i controlli di accesso ai dati come l'ADODC (ADO) o il DataControl (DAO) sono inutili, obsoleti e creano solo problemi.
    In particolare lasciar perdere DAO!
    Visto poi l'estrema semplicita di accedere ai dati senza di essi non si capisce il perchè siano ancora usati.
    Ecco come fare (ti mostro una cosa semplice semplice):

    Nel Progetto
    Aggiungere un riferimento alla libreria di ADO: Microsoft ActiveX Data Objects 2.5, o superiore.
    Se non hai molta esperienza ti consiglio la 2.5 perchè è l'utlima che rende disponibile la guida dall'IDE di VB6.

    In un modulo
    Conviene impostare la connessione a livello globale,
    così ne basta una sola e sarà accessibile da qualsiasi punto del programma:
    codice:
    Public CN as ADODB.Connection
    Public gsDBPath As String
    Nel Form
    Nell'evento Form_Load() apro la connessione
    codice:
    gsDBPath = App.Path & "\nometuodb.mdb"
    Set CN = New ADODB.Connection
    With CN
        .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & gsDBPath  & ";Persist Security Info=False"
        .CursorLocation = adUseClient
        .Open
    End With
    Dopo di che potrai accedere ai dati con un recordset
    codice:
    Dim sSQL As String
    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset
    
    sSQL = "SELECT * FROM tabella"
    rs.Open sSQL, CN
    Rem Mostro i dati nella griglia
    Set DataGrid1.DataSource = rs
    Se vuoi conoscere una miglior gestione del tutto, ti consiglio di scaricarti questi 2 esempi, che dimostrano molte caratteristiche utili, oltre a quello dell'accesso ai dati:

    ProvaLogin
    http://nuke.vbcorner.net/Progetti/VB...3/Default.aspx

    ADO DataProject 2
    http://nuke.vbcorner.net/Progetti/VB...8/Default.aspx

    Ciao

  3. #3

    popolare una datagrid senza utilizzo dell'ado data control

    grazie dell'aiuto gibra ma io sn un ragazzo che ha imparato vb a scuola inoltre sn alle prime armi e quindi delle cose che ho scaricato non ne ctapisco niente ti chiedo se tu o qualche altro del forum potreste scrivermi per intero il codice
    allora il mio database si chiama piero il nome della tabella è piero e i campi da inserire sn nell'ordine
    nome; cognome; data di nascita; sesso; luogo di nascita; codice fiscale la datagrid si chiama datagrid1 vi ringrazio in anticipo

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244

    Re: popolare una datagrid senza utilizzo dell'ado data control

    Originariamente inviato da piero1991
    grazie dell'aiuto gibra ma io sn un ragazzo che ha imparato vb a scuola inoltre sn alle prime armi e quindi delle cose che ho scaricato non ne ctapisco niente ti chiedo se tu o qualche altro del forum potreste scrivermi per intero il codice
    allora il mio database si chiama piero il nome della tabella è piero e i campi da inserire sn nell'ordine
    nome; cognome; data di nascita; sesso; luogo di nascita; codice fiscale la datagrid si chiama datagrid1 vi ringrazio in anticipo
    Allora ti basta il codice che ti ho indicato nel mio post.

    In ogni caso, perdona la franchezza, ma se già questo è un problema per te, allora devi metterti a studiare di brutto, perchè quello che viene dopo... è molto più difficile.
    Qualche libro del tipo 'passo-passo' ti sarebbe molto utile.

    Ciao

  5. #5

    popolare una datagrid senza utilizzo dell'ado data control

    ciao ci sn riuscito scrivendo questo codice se può servire a qualcuno in futuro

    'Dichiarazioni generali
    Option Explicit
    'Si scrive per evitare che l'IDE di VB6 possa creare variabili non dichiarate precedentemente.

    'Creo connessione e recordset
    Dim CN As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    'La prima riga crea la connessione tra l'applicazione e il file dei dati (.mdb), permettendo la comunicazione tra i due, la seconda produce il recordset, l'oggetto in cui saranno contenuti i dati su cui lavorare.

    Private Sub Form_Load()

    CN.CursorLocation = adUseClient
    'Questo comando stabilisce in quale modo devono essere utilizzati i dati. Per potere utilizzare la datagrid senza errori deve essere impostata AdUseClient.

    'Apro la connessione.
    CN.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = piero.mdb"
    'Questa riga apre la connessione. Al posto di Archivio.mdb deve essere inserito il percorso e il nome del file.
    'Se viene scritto solo il nome, l'archivio viene cercato nella cartella dell'applicazione.

    rs.Open "SELECT * FROM piero ", CN, adOpenStatic, adLockOptimistic, adCmdUnknown
    'Qui si apre il recordset e si riempie con i dati contenuti nella tabella.

    If rs.BOF And rs.BOF Then
    rs.AddNew
    End If
    'Adesso si crea il primo record nel caso in cui nella tabella non ce ne siano.

    'La Datagrid non viene visualizzata tra gli strumenti, deve essere presa da: Progetto\Componenti\"Microsoft DataGrid control 6.0 (OLEDB).
    Set DataGrid1.DataSource = rs

    cmq ti ringrazio per l'impegno

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244

    Re: popolare una datagrid senza utilizzo dell'ado data control

    Mi permetto qualche osservazione, giusto per correttezza nel dare informazioni utili a far capire che una determinata implementazione deve essere valutata in base ai differenti scenari che è possibile incontrare (applicazione desktop oppure in rete, singola-utenza o multi-utenza, tipo di database, ecc.)

    Originariamente inviato da piero1991
    ciao ci sn riuscito scrivendo questo codice se può servire a qualcuno in futuro

    'Creo connessione e recordset
    Dim CN As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Così non va bene, il modo corretto è come ti ho indicato: si usa prima Dim per dichiarare e dopo Set per creare una nuova istanza dell'oggetto.
    Queste istruzioni andavano bene qualche annetto fa con vecchie versioni di ADO (ecco perchè purtroppo se ne leggono ancora in giro per il web), ma ora non vanno più bene, perchè in questo modo alcune caratteristiche degli oggetti di ADO non possono essere utilizzate.
    Sarebbe utile tenersi sempre aggiornati con qualche nuovo testo sull'argomento.

    Originariamente inviato da piero1991
    Private Sub Form_Load()

    CN.CursorLocation = adUseClient
    'Questo comando stabilisce in quale modo devono essere utilizzati i dati. Per potere utilizzare la datagrid senza errori deve essere impostata AdUseClient.
    Questo è corretto solamente se io leggo i dati, ma una buona programmazione deve inglobare tutte operazioni di INSERT o UPDATE all'interno di una transazione (BeginTrans) e relativo commit (CommitTrans) oppure, in caso di errore chiamare il metodo RollbackTrans, e tutto questo è possibile solo se si imposta CursorLocation = adUseServer .
    Quindi bisogna tener conto dell'impostazione di CursorLocation a seconda delle operazioni da eseguire.

    Originariamente inviato da piero1991
    rs.Open "SELECT * FROM piero ", CN, adOpenStatic, adLockOptimistic, adCmdUnknown
    'Qui si apre il recordset e si riempie con i dati contenuti nella tabella.

    If rs.BOF And rs.BOF Then
    rs.AddNew
    End If
    'Adesso si crea il primo record nel caso in cui nella tabella non ce ne siano.
    Anche qui c'è caso e caso da valutare con molta attenzione.
    Troppo spesso si nota la cattiva abitudine di modificare i dati in griglia, il che non è propriamente corretto per moltissimi motivi, uno per tutti è:
    la validazione dell'input è complicata in maniera incredibile e richiede grande attenzione e molto codice.

    A parte rarissimi casi, l'edit in griglia non va mai utilizzato.
    Come fai a verificare che:
    - il record non sia già presente?
    - che la data sia nel formato corretto?
    - che manchino dei dati 'necessari' ?
    e l'elenco è lungo...

    Di norma si usa invece un form ad hoc in cui l'utente inserisce un nuovo record, oppure ne modifica uno esistente, ed al momento di registrare è possibile PRIMA di apportare le modifiche fare tutte le verifiche del caso.

    Solo dopo posso eseguire una INSERT / UPDATE nell'ambito di una transazione sicura.

    Come vedi, le variabili da considerare sono veramente tante. E non ho nemmeno sfiorato il concetto di multi-utenza...

    Ciao

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.