Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Alimentazione DataGrid

  1. #1
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117

    Alimentazione DataGrid

    Ho un problema nell'alimentare il mio DataGrid con un DataTable costruito progressivamente

    Praticamente io effettuo un ciclo per tutti i "miei codici progetto" e...

    controllo sulla tabella del db se, per quello specifico progetto ci sono elementi; se vengono trovati, vorrei copiarli progressivamente nel DataSet per alimitare successivamente il mio DataGrid.

    Quindi copierei solo gli elementi che hanno come ID Progetto uno dei progetti del mio ciclo.

    in codice:


    // ciclo ... per tutti i miei CodiciProgetto.... usando la var
    CodiceProgetto

    ...

    // in questo modo verifico se ci sono righe nella mia tabelle per il
    CodiceProgetto del ciclo
    OleDbCommand myCommandAcconto = new OleDbCommand("SP_ControlloPresenza",
    myConnection);

    myCommandAcconto.Parameters.Add(new OleDbParameter("@CodiceProgetto",
    OleDbType.VarChar));

    myCommandAcconto.Parameters["@CodiceProgetto"].Value = CodiceProgetto;

    myCommandAcconto.CommandType=CommandType.StoredPro cedure;

    OleDbDataAdapter DataAdatpAcconto= new OleDbDataAdapter(myCommandAcconto);

    // riempio il mio DataTable con questa/queste righe

    DataAdatpAcconto.Fill(DsDati, "Acconto");

    // ed ora...??? mi sono persa



    ....

    // fine ciclo



    Grazie per l'aiuto

  2. #2

    Re: Alimentazione DataGrid

    Originariamente inviato da valeria75
    ...se vengono trovati, vorrei copiarli progressivamente nel DataSet per alimitare successivamente il mio DataGrid.
    non mi e' chiara la domanda. Provo a supporre che trovi difficolta a mettere in un unica tabella piu' risultati. Se e' cosi, puoi utilizzare la funzione merge del dataset
    codice:
    tuodataset.merge(tabella)
    Saluti a tutti
    Riccardo

  3. #3
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Io vorrei, di volta in volta, nel ciclo while, aggiungere nel DataSet l'elemento (record) che risponde alla condizione del mio ciclo.

    Grazie

  4. #4
    Originariamente inviato da valeria75
    Io vorrei, di volta in volta, nel ciclo while, aggiungere nel DataSet l'elemento (record) che risponde alla condizione del mio ciclo.
    l'elemento record lo aggiungi alla datatable da cui proviene (non al dataset).
    Quindi se ipotizziamo una tabella dtProgetti dentro un dataset ds all'interno del tuo ciclo puoi scrivere qualcosa di simile al seguente esempio (scrivo senza controllo della sintassi)
    codice:
    dim drProgetto as datarow
    drProgetto = ds.tables("dtProgetti").newrow 
    drProgetto("campo1") = valorechevuoi 
    drProgetto("campo2") = idem 
    ...
    ds.tables("dtProgetti").rows.add(drProgetto)
    Saluti a tutti
    Riccardo

  5. #5
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    ma non esiste un modo per copiare in automatico tutti i records nella mia tabella ... mi spiego...


    // recupero l'elenco dei progetti dal Dettaglio

    OleDbDataReader myDataReaderAcconto;
    myConnectionDR.Open();
    OleDbCommand myCommandAccontoDR = new OleDbCommand("SP_Dettaglio_Progetti", myConnectionDR);

    myCommandAccontoDR.CommandType=CommandType.StoredP rocedure;
    myDataReaderAcconto = myCommandAccontoDR.ExecuteReader();

    while (myDataReaderAcconto.HasRows)
    {

    // recupero la/le fattura di acconto per questo progetto

    OleDbCommand myCommandAcconto = new OleDbCommand("SP_Fattura_ControlloPresenzaAcconto" , myConnection);
    myCommandAcconto.Parameters.Add(new OleDbParameter("@CodiceProgetto", OleDbType.VarChar));
    myCommandAcconto.Parameters["@CodiceProgetto"].Value = myDataReaderAcconto["CodiceProgetto"].ToString();
    myCommandAcconto.CommandType=CommandType.StoredPro cedure;
    OleDbDataAdapter DataAdatpAcconto= new OleDbDataAdapter(myCommandAcconto);

    ...

    // a questo punto ho una/due/x righe in base alle fatture che ho recuperato e vorrei copiarle TUTTE in automatico in un DataTable (questo poi sarà da fare per TUTTO il ciclo.)


    }



    Grazie per l'aiuto

  6. #6
    Originariamente inviato da valeria75
    ma non esiste un modo per copiare in automatico tutti i records nella mia tabella ... mi spiego...
    argh VVoVe:
    ho il sospetto che quel datareader e il ciclo ti creino un po' di confusione. Non mi sembra una buona strada partire da un set di record e per ognuno creare un dataadapter e una datatable in un ciclo. Come' la query nella stored procedure?
    Saluti a tutti
    Riccardo

  7. #7
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    la query effettua una ricerca per il "codice progetto" recuperato per verificare se ci sono records con questo progetto... e restituisce un'elenco di righe che devo visualizzare nel mio datagrid

    il mio problema è che questa operazione devo effettuarla per X codici progetti (sulla base di un'altra query iniziale)


    ovvero questa

    OleDbDataReader myDataReaderAcconto;
    myConnectionDR.Open();
    OleDbCommand myCommandAccontoDR = new OleDbCommand("SP_Dettaglio_Progetti", myConnectionDR);

    myCommandAccontoDR.CommandType=CommandType.StoredP rocedure;
    myDataReaderAcconto = myCommandAccontoDR.ExecuteReader();

    while (myDataReaderAcconto.HasRows)



    Quindi ad ogni CodiceProgetto possono corrispondere X righe, io tutte queste devo, progressivamente, inserirle nel mio DataGrid

  8. #8
    Originariamente inviato da valeria75
    ...sulla base di un'altra query iniziale
    ovvero questa
    while (myDataReaderAcconto.HasRows)
    la query non la vedo visto che e' una stored procedures. Dando una occhiata al codice mi sembra che se vuoi usare un datareader sarebbe meglio modificassi con
    codice:
    while (myDataReaderAcconto.read)
    Per il resto vale il consiglio che ti ho dato nel primo post.
    hai il dataset con dentro tabella progetti (anche vuota pero' c'e').
    inizio ciclo
    istanzio e riempio dtProgettiTemporanea
    dataset.merge(dtProgettiTemporanea)
    fine ciclo
    alla fine ti ritrovi una tabella con tutti i record che vuoi. Questo e' un modo, poi possono essercene altri ma bisognerebbe approfondire meglio le relazioni ecc.
    Saluti a tutti
    Riccardo

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 © 2026 vBulletin Solutions, Inc. All rights reserved.