[Visul Basic 2010] Conteggio record duplicati

di il
14 risposte

[Visul Basic 2010] Conteggio record duplicati

Salve a tutti sono nuovo di questo forum e premetto che sono un principiante di visual basic. Ho bisogno di un aiuto per un programma che sto realizzando per uso personale. Ho un database Access collegato tramite wizard a visual basic 2010, in automatico come da wizard ho dataset, bindingsouce e tableadapter, sul form un datagrid e vari text e pulsanti per salvataggi ecc. Il mio problema e che avrei bisogno di fare un conteggio di dati duplicati che ho su una tabella Inserimento_veicoli (Es. Conteggio modello di veicoli tipo Fiat Punto) e sono riuscito a trovare il codice giusto
 Dim lista = ((From o In AutoDatabaseDataSet.Tables("Inserimenti_Veicoli") _
                   Order By o.Item("Modello") _
                   Select o.Item("Modello")))
        Dim ar As New ArrayList(lista.ToArray())
        ListBox1.DataSource = ar
fino a qui tutto ok, questa arraylist mi elenca nella listbox tutti i tipi di veicoli doppi

Modello
fiat punto
fiat punto
ecc...
solo che vorrei che mi importasse sulla listbox anche i dati corrispondenti a ogni veicolo. (Es.
Modello data immatr. km
fiat punto 23/03/2011 100000
fiat punto 25/06/2011 90000

Come posso fare? Grazie in anticipo

14 Risposte

  • Re: [Visul Basic 2010] Conteggio record duplicati

    Nella query LINQ che stai facendo estrai solo i campi "Modello"
    Select o.Item("Modello")
    E ti ritrovi una lista di DataRow che contengono solo quel campo, potresti fare la select semplicemente in questo modo:
    Select o
    e nei DataRow ti ritrovi tutti i campi.

    A questo punto hai il problema di visualizzarli, la struttura piu adatta sarebbe una tabella tipo un DataGridView, se vuoi usare una ListBox devi concatenare in una lista di stringhe i campi dei record e poi mostrarli nella ListBox.

    Se sei un principiante imparare questo o quello è quasi lo stesso, considera il WPF che ha delle possibilità di binding molto più sofisticate.
  • Re: [Visul Basic 2010] Conteggio record duplicati

    Grazie tante per il tuo aiuto mi sei stato utile, ti faccio sapere perchè avro bisogno di aiuto per questo problema. Anzi Se faccio cosi?
    datagridview1.DataSource = ar
    non so se è corretto

    Niente da fare non riesco a riempire una listbox o datagrid da questa arraylist, mi è più semplice crearne una nuova già di tipo string o integer. Un aiutino grazie
  • Re: [Visul Basic 2010] Conteggio record duplicati

    Puoi scrivere la nuova query che stai facendo?
  • Re: [Visul Basic 2010] Conteggio record duplicati

    Io ho bisogno di estrarre i record doppi e quest query lo fa
     Dim lista = ((From o In AutoDatabaseDataSet.Tables("Inserimenti_Veicoli") _
                       Order By o.Item("Modello") _
                       Select o.))
            Dim ar As New ArrayList(lista.ToArray())
    adesso devo mettere tutto il contenuto della array in una listbox o datagrid, potete darmi una mano? Grazie
  • Re: [Visul Basic 2010] Conteggio record duplicati

    Come posso risolvere questo problema? se faccio cosi
     DataGridView1.DataSource = ar
    mi carica i dati fino a quando non ho un campo vuoto e mi dice dbnull.
  • Re: [Visul Basic 2010] Conteggio record duplicati

    Barba59 come posso fare a risolvere questo mio enigma? Puoi darmi una mano?
  • Re: [Visul Basic 2010] Conteggio record duplicati

    Vai in Data/Show DataSource -> edit DataSet with Designer -> ti si apre la pagina NomeDataSet.xsd, nelle proprietà dei vari campi imposti la property NullValue a {empty} invece che {Throw exception}.
    (Oppure nel database non metti i campi vuoti )
  • Re: [Visul Basic 2010] Conteggio record duplicati

    Grazie mille mi hai risolto un problema ora funziona tutto caricando i dati nella datagrid. Se li voglio caricare nella listbox come faccio? ti chiedo questo cosi in futuro so come posso fare, perchè utilizzando datasource non mette i dati nella list. Grazie ancora
  • Re: [Visul Basic 2010] Conteggio record duplicati

    Dato che la ListBox non è divisa in colonne, devi concatenare in qualche modo i campi in un' unica stringa. Il modo più semplice è ciclare sull' array di record comporre la stringa e inserirla nella ListBox con ListBox1.Items.Add(s).
  • Re: [Visul Basic 2010] Conteggio record duplicati

    Grazie proverò con calma ricercando con google...
  • Re: [Visul Basic 2010] Conteggio record duplicati

    Ho questa query
     Dim duplicates = From models In AutoDatabaseDataSet.Tables("Inserimenti Veicoli").AsEnumerable
                                Group models By Tipo= models.Field(Of String)("Tipo") Into Group
                                Where Group.Count > 1
                                Select New With {.Tipo= Tipo, .Numero_veicoli = Group.Count}
    mi crea due colonne sul datagrid una tipo e una numero veicoli dove in una mi mette il tipo e l'altra la quantita di veicoli duplicati, se non voglio la quantita ma solo la lista di tipo come faccio?
    con questa query mi fa es.
    Tipo| Numero veicoli
    Punto |3
    clio | 4

    io invece voglio fare cosi per capirci avere solo la colonna Tipo
    Tipo
    Punto
    Punto
    Punto
    Clio
    Clio
    Clio
    Clio
  • Re: [Visul Basic 2010] Conteggio record duplicati

    Ciao entony80

    Basta che scrivi:
    
    .... Select New With {.Tipo= Tipo }
    
    Quando usi la forma 'Select New With' stai creando un tipo anonimo, ovvero un oggetto il cui tipo non è stato specificato e che contiene i campi che specifichi. Lo scopo è quello di ridurre le dimensione della lista, in quanto è inutile restituire tutti i campi di un record quando te ne serve solo qualcuno.
  • Re: [Visul Basic 2010] Conteggio record duplicati

    Grazie per le tue risposte puntuali, sono riuscito in questo caso a capire un po il funzionamento della query linq. Sto incrementando notevolmente il mio programma riuscendo ad avere un risultato che va oltre le mie aspettative grazie al tuo aiuto
  • Re: [Visul Basic 2010] Conteggio record duplicati

    Risponderti è un piacere, personalmente sono rimasto affascinato dal LINQ, e dire che all' inizio non ne avevo capito l' importanza, per cui se hai altre domande spara pure
Devi accedere o registrarti per scrivere nel forum
14 risposte