Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126

    Disegnare un database in memoria con l'ausilio dei dataset

    ciao, l'obiettivo è quello di rendere + performante l'applicazione e il progetto è quello di popolare varie combobox (DisplayMember e ValueMember) da dati provenienti dal database.
    Al momento creo un OleDbConnection, un OleDbCommand e OleDbDataReader, ciclo sui dati della select e popolo i combobox, siccome ogni combo deve essere popolata con dati provenienti da diverse tabelle, per ogni combobox cambio il commandtext dell'OleDbCommand rifaccio il ciclo e popolo la combo, questo per ogni combo come detto.
    Il tutto funziona, ma vorrei qualcosa di + performante in termini quindi di velocità ma soprattutto vorrei poter lavorare in modo disconnesso. Insomma, lo sò che i dataset in termini di performance non sono proprio adatti, ma forse nel mio caso creare un dataset è opportuno, in quanto vorrei poter archiviare tutto i risultati delle query in memoria e poi fare delle operazioni in modo disconnesso. Per esempio popolare una determinata combobox dalla selezione di una certa item di un'altra combobox. Fare questo con i datareader significa ricollegarsi al database quando seleziono una certa item di una combobox e filtrare il popolamento di un'altra combo secondo il valore selezionato nella prima combo, mentre con i dataset, siccome ho tutto in memoria dovrei poter fare queste operazioni in modo disconnesso.
    La domanda è: mi date un consiglio su come progettare il dataset?
    Riassumendo: vorrei poter creare una sola volta la rappresentazione tabellare di tutte le select che adesso utilizzo per popolare le combo, disconnettermi e lavorare sull'oggetto disconnesso.. fino a qui tutto teoria, ma nella pratica?

    ho anche provato a fare qualcosa, non sò se stò facendo bene, non sò se è questo codice è + performante rispetto ad un codice che utlizza i datareader, ma vorrei trovare il massimo delle performance, visto che mi stò collegando ad un db su un mainframe as400 e per riempire due combo ci mette circa 5 secondi :

    codice:
    .. connessione .. 
    
    DataSet dsAnaBase = new DataSet(); 
    OleDbDataAdapter adpFornitore = new OleDbDataAdapter("SELECT FORCD,FORRASOC FROM DDFORPT",cn); 
    OleDbDataAdapter adpGruppo = new OleDbDataAdapter("SELECT XCDEL,XCDTB,XDTAB FROM LIB.ASD00F WHERE XCDTB='GRU'", cn); 
    
    
    adpFornitore.Fill(dsAnaBase,"tblFornitore"); 
    adpGruppo.Fill(dsAnaBase, "tblGruppo"); 
    
    cn.Close(); 
    
    comboFornitore.DataSource = dsAnaBase.Tables["tblFornitore"]; 
    comboFornitore.DisplayMember = "FORRASOC".ToUpper().Trim(); 
    comboFornitore.ValueMember = "FORCD".Trim(); 
    comboFornitore.SelectedIndex = 0; 
    
    comboGruppo.DataSource = dsAnaBase.Tables["tblGruppo"]; 
    comboGruppo.DisplayMember = "XDTAB".ToUpper().Trim(); 
    comboGruppo.ValueMember = "XCDEL".Trim(); 
    comboGruppo.SelectedIndex = 0;
    Ciao

  2. #2
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Potresti mettere il dataset in una variabile application o session e poi con un dataview e l'opportuno filtraggio popolare le combo in base alle selezioni effettuate.
    Valuta però che se il server non è un gran che, avrà anche poca ram e i contenuti di queste variabili vanno a finire proprio li.
    Ciao e buona pasqua.
    Legnetto

  3. #3
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    Originariamente inviato da Legnetto
    Potresti mettere il dataset in una variabile application o session e poi con un dataview e l'opportuno filtraggio popolare le combo in base alle selezioni effettuate.
    Valuta però che se il server non è un gran che, avrà anche poca ram e i contenuti di queste variabili vanno a finire proprio li.
    Ciao e buona pasqua.
    Legnetto
    bhè si, si tutto
    buona pasqua anche a te.

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.