+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

datagrid ed eventi

  1. #1
    Kevin non è in linea Scolaretto
    Ciao a tutti, vorrei esporre il mio problema.
    So come far funzionare un datagrid, insieme ad un oggetto adodc, vorrei chiedervi se posso intervenire da codice, e come fare.
    Vi spiego:
    Ho una tabella in cui c'è un campo "tipo" che i suoi valori sono 1 e 2
    vorrei far apparire nel datagrid solo i dati corrispondenti ad un solo valore, cioè se ho bisogno dei dati tipo 1 visualizza quelli altrimenti visualizza i dati tipo 2.
    Però tutto questo fatto da codice
    Grazie spero di essere stato chiaro
    In attesa di un vostro aiuto porgo distinti saluti

  2. #2
    L'avatar di yronium
    yronium non è in linea Scribacchino
    Ciao. Normalmente la datagrid mostra il recordset restituito dalla query che ha estratto i dati dal database, quindi dovresti modificare la query con una condizione WHERE, in modo da estrarre soltanto i record rispondenti al criterio selezionato.
    In alternativa, visto che ti appoggi ad un controllo Adodc, puoi impostarne la proprietà Filter, anche se in generale non è una buona politica estrarre dal database tutti i record per poi mostrarne solo una parte: è come se tenessi in memoria mille record ma ne mostrassi soltanto duecento. Ti consiglio di scegliere questa tecnica soltanto se devi trattare pochi record.
    Spero sia utile. Ciao.

  3. #3
    Kevin non è in linea Scolaretto
    Quote Originariamente inviato da yronium Visualizza il messaggio
    Ciao. Normalmente la datagrid mostra il recordset restituito dalla query che ha estratto i dati dal database, quindi dovresti modificare la query con una condizione WHERE, in modo da estrarre soltanto i record rispondenti al criterio selezionato.
    In alternativa, visto che ti appoggi ad un controllo Adodc, puoi impostarne la proprietà Filter, anche se in generale non è una buona politica estrarre dal database tutti i record per poi mostrarne solo una parte: è come se tenessi in memoria mille record ma ne mostrassi soltanto duecento. Ti consiglio di scegliere questa tecnica soltanto se devi trattare pochi record.
    Spero sia utile. Ciao.

    Grazie per l'aiuto, ma quello che sto realizzando è un gestionale quindi si prevedono molti record.

    se puoi aiutarmi ti dico il mio inizio di codice, però non ho avuto i risultati previsti


    tipo = "1"
    sql = "Select * from tab_clienti_fornitori Where tipo = '" & tipo & "'"
    frmcercaclientifornitori.Adodc1.RecordSource = sql

    ciao da Kevin

  4. #4
    L'avatar di yronium
    yronium non è in linea Scribacchino
    Quote Originariamente inviato da Kevin Visualizza il messaggio
        tipo = "1"
        sql = "Select * from tab_clienti_fornitori Where tipo = '" & tipo & "'"
        frmcercaclientifornitori.Adodc1.RecordSource = sql
    
    Probabilmente l'errore è che il campo tipo contiene valori numerici, e tu lo tratti come se contenesse un valore stringa e lo passi al database racchiuso tra apici.
    Che succede se fai così:...
        tipo = 1
        sql = "Select * from tab_clienti_fornitori Where tipo = " & tipo 
        frmcercaclientifornitori.Adodc1.RecordSource = sql
    
    ....?

  5. #5
    Kevin non è in linea Scolaretto
    Ciao, è vero ho commesso un errore, ma comunque non riesco a caricare il datagrid con i valori tipo = 1
    Iniziamo da capo:
    ho un datagrid, e un ADODC1, in quest'ultimo se intervengo da codice non dovrei scrivergli niente giusto?
    Grazie
    Ciao da Kevin

  6. #6
    Kevin non è in linea Scolaretto
    Ciao, sto provando a fare una cosa del genere
    Set cn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =C:\Documents and Settings\300\Desktop\Gestione\Magazzino.mdb;"
    Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =C:\Documents and Settings\300\Desktop\Gestione\Magazzino.mdb;"

    Set DataGrid1.DataSource = frmcercaclientifornitori.Adodc1.RecordSource
    frmcercaclientifornitori.Adodc1.Refresh
    sql = "Select * from tab_clienti_fornitori Where tipo =" & 1
    frmcercaclientifornitori.Adodc1.RecordSource = sql
    Mi dice sempre necessario oggetto e mi colora di giallo adodc1.connectionstring

    Potreste aiutarmi?
    grazie

  7. #7
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Lascia perdere l'ADODC...
    Questi controlli sono solo fonte di guai.

    Questa parte dovrebbe essere globale all'applicazione, perchè basta UNA connessione che si apre all'avvio, e si chiude all'uscita del programma,
     
    Set CN = New ADODB.Connection
    CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =C:\Documents and Settings\300\Desktop\Gestione\Magazzino.mdb;"
    

    Per popolare la griglia
     
    Set rs = New ADODB.Recordset
    sql = "Select * from tab_clienti_fornitori Where tipo =" & 1
    rs.Open sql, CN, adOpenKeyset, adLockOptimistic
    Set DataGrid1.DataSource = rs
    
    Ovviamente per i due parametri finali dell'istruzione:
    rs.Open sql, CN, adOpenKeyset, adLockOptimistic
    utilizzerai quelli che servono a te, in base a cosa devi fare nella griglia (spero non la lascerai editare all'utente finale!).

    Se vuoi un esempio pratico senza ADODC, guarda questo:
    ADO DataProject - Parte 2
    ADO Data project 2.0
    ℹ️ Leggi di più su gibra ...

  8. #8
    Kevin non è in linea Scolaretto
    Ciao, Gibra, ti ringrazio davvero tanto per il tuo aiuto, ho provato con il codice che mi hai postato, mi dice tipo di dati non corrispondenti nell'espressione criterio, e mi segnala la rs.open, mi aiuteresti a chiudere questo intoppo?
    Grazie infinitamente

  9. #9
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Te l'aveva già segnalato Yronium come fare.
    Solo tusai di che tipo di campo è il campo Tipo nella tabella tab_clienti_fornitori .
    ℹ️ Leggi di più su gibra ...

  10. #10
    L'avatar di yronium
    yronium non è in linea Scribacchino
    Ciao. Oltre ai consigli che ti ha dato gibra, che condivido pienamente, se proprio vuoi utilizzare un controllo Adodc devi associarlo alla datagrid dopo averlo aperto, o meglio dopo che hai caricato il recordset: se tu associ il controllo Adodc alla grid e poi carichi il recordset la grid non viene automaticamente riassociata. Ti allego un esempio di codice funzionante dove Adodc1 è un controllo Adodc e dgr1 è un controllo Datagrid.Questo esempio punta al database Nwind.mdb che è un database di esempio allegato al SDK di ADO. Naturalmente tu puoi adattare il codice alle tue esigenze.
    Option Explicit
    
    Private Sub Form_Load()
        Dim cnstring As String
        Dim mdbPath As String
        Dim sql As String
    CaricaControlloADODB:
        mdbPath = "C:\Programmi\Microsoft Data Access SDK\Samples\ADO\NWIND.mdb"
        cnstring = "Provider=Microsoft.Jet.OLEDB.4.0;"
        cnstring = cnstring & "Data Source=" & mdbPath & ";"
        cnstring = cnstring & "Persist Security Info=False"
        Adodc1.ConnectionString = cnstring
        sql = "SELECT CompanyName, ContactName, ContactTitle, Address, City, "
        sql = sql & "Region, PostalCode, Country, Phone FROM Customers "
        sql = sql & "WHERE City = 'London' OR City = 'México D.F.' OR City = 'Rio de Janeiro' "
        sql = sql & "ORDER BY Country, CompanyName"
        Adodc1.RecordSource = sql
    AssociaGrid:
        Set dgr1.DataSource = Adodc1
    End Sub
    
    Se in seguito devi modificare il recordset sottostante al controllo Adodc, devi modificare la proprietà RecordSource del controllo Adodc sulla nuova query, ed eseguire il metodo Refresh del controllo Adodc, come segue:
    Private Sub btnCambiaDati_Click()
        Dim sql As String
        sql = "SELECT ProductName, SupplierID, UnitPrice FROM Products"
        Adodc1.RecordSource = sql
        Set dgr1.DataSource = Adodc1
        Adodc1.Refresh
    End Sub
    
    Questo codice è testato e perfettamente funzionante: ho sott'occhio i record della tabella Customers, e se clicco sul pulsante btnCambiaDati nella grid appaiono i record della tabella Products. Puoi modificare il codice secondo le tue necessità.

    Spero sia utile. Ciao.

    PS: che tipo di dati ha il campo tipo nel tuo db?
    (PPS: Ehi, è il mio post numero 400!)

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Filtrare datagrid svuotato su richiesta altro datagrid relazionato
    Da Codice_da_Vinci nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 19-12-2014, 10:51
  2. Ricavare il valore selezionato da una datagrid Datagrid WPF
    Da kucaio nel forum Visual Basic .Net
    Risposte: 7
    Ultimo Post: 14-04-2013, 16:36
  3. Gli eventi in c#
    Da sanfra nel forum C#
    Risposte: 2
    Ultimo Post: 05-11-2009, 18:40
  4. [VB6] Eventi
    Da cfava nel forum Visual Basic 6
    Risposte: 0
    Ultimo Post: 29-11-2007, 15:11
  5. Eventi in C#
    Da kikko nel forum C#
    Risposte: 1
    Ultimo Post: 08-04-2005, 12:53