Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Mi sembra di avertelo già detto. Una query linq restituisce UNA LISTA di valori e NON un solo valore. Sarebbe come scrivere:
Codice sorgente - presumibilmente VB.NET |
Dim Array(2) As String Dim Stringa As String Stringa = Array
|
E' sbagliato. Un array di stringhe non è convertibile in una stringa, così una collezione di qualsiasi tipo di dato non è convertibile in una sola variabile di quel tipo. Capit?
|
|
xone2003 (Normal User)
Rookie
Messaggi: 32
Iscritto: 27/11/2008
|
Hai perfettamente ragione Totem,
me l'avevi già detto!
Tuttavia pensavo che con un select mirato e sapendo con certezza che il risultato poteva solo ed esclusivamente essere un valore unico si potesse comunque utilizzare senza specificare il (0) dopo la variabile.
Ovviamente non sapevo finchè mi hai delucidato dello (0) e nemmeno del fatto che il select risponde con un elenco di valori!
Ho corretto con le indicazioni che mi hai dato e con qualche aggiustamento sono riuscito ad importare tutto (con calma verificherò i dati ma sembra tutto ok)!!
Quindi ringrazio per il grande ed indispensabile aiuto!!!
GRAZIE!!!!
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Ecco.
|
|
xone2003 (Normal User)
Rookie
Messaggi: 32
Iscritto: 27/11/2008
|
Purtroppo sono andato a complicarmi la vita e se l'insert lo faccio senza alcun criterio, come appena postato, tutto ok.....mentre se cerco di effettuare un controllo delle eventuali righe duplicate non funziona ed inserisce comunque tutto.
ho pensato che il problema potesse essere un mancato aggiornamento della tabella nel momento del controllo duplicati ma non è questo il caso.
Credo si tratti di come vengono gestite le righe di controllo alla dichiarazione K.
Probabilmente il risultato della select è zero/nessuna.
Preciso che il nome delle colonne "Bicicletta" e "categoria" sono gli stessi ma in due tabelle differenti.
Praticamente il funzionamento dovrebbe essere:
ad ogni riga del database "datitot" da cui attingere i dati, prendo la prima riga "bicicletta" e "categoria" poi questi valori li confronto con quelli eventualmente presenti nella tabella Tipologiabike alla voce "bicicletta" e "categoria" e se non sono presenti (not k>=1) allora le inserisco.
Però come ho già detto, mi inserisce tutto quanto indipendentemente dai duplicati, quindi dopo aver provato ad effettuare un update della tabella ad ogni ciclo non saprei come modificare il codice.
Sono sicuro che mi prenderò un'altra tirata d'orecchie....perchè credo di intuire che il problema sia sempre nel discorso valore unico o lista di valori.
Codice sorgente - presumibilmente VB.NET |
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim controllo = Me.DatiExcelDataSet.DatiTot.Rows.Count Dim i = 0 For i = 1 To controllo Step 1 Dim Bike = From riga As DatiExcelDataSet.DatiTotRow In Me.DatiExcelDataSet.DatiTot _ Where riga.Nr = i Select riga.Bicicletta Dim Cat = From riga As DatiExcelDataSet.DatiTotRow In Me.DatiExcelDataSet.DatiTot _ Where riga.Nr = i Select riga.Categoria Dim InsertinTipologiaBike As DBDatiBiciDataSetTableAdapters.TipologiaBikeTableAdapter = New DBDatiBiciDataSetTableAdapters.TipologiaBikeTableAdapter Dim k = From riga As DBDatiBiciDataSet.TipologiaBikeRow In Me.DbDatiBiciDataSet.TipologiaBike _ Where riga.Bicicletta = Bike(0) And riga.Categoria = Cat(0) _ Select riga.Bicicletta & riga.Categoria If Not k.Count >= 1 Then Try InsertinTipologiaBike.InsertQuery2(Bike(0), Cat(0)) TipologiaBikeTableAdapter.Update(DbDatiBiciDataSet) Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical) End Try Else End If Next MsgBox("inserimento nel database Biciclette completato") End Sub End Class
|
Ultima modifica effettuata da xone2003 il 23/01/2009 alle 10:30 |
|
xone2003 (Normal User)
Rookie
Messaggi: 32
Iscritto: 27/11/2008
|
OK OK OK!!!
trovato!
le orecchie me le tiro da solo!!
Ho "dimenticato" dopo la riga di insert una ulteriore in cui ricarico la tabella prima del successivo ciclo for!
in pratica aggiungendo :
Codice sorgente - presumibilmente Plain Text |
Me.TipologiaBikeTableAdapter.Fill(Me.DbDatiBiciDataSet.TipologiaBike)
|
dopo l'insert e quindi prima del successivo ciclo "for" tutto è andato a posto!!
Devo dire che il timore di una tirata d'orecchie mi è servito!
grazie!
Ultima modifica effettuata da xone2003 il 23/01/2009 alle 16:16 |
|