xone2003 (Normal User)
Rookie
Messaggi: 32
Iscritto: 27/11/2008
|
Ciao a tutti,
eccomi di nuovo qua con un problema..
Vorrei popolare un database .sdf con i dati presi da un archivio di access.
ho letto di tutto di più ma non ho idea di come fare.
I campi sono compatibili in termini sia di valori che di titoli colonne (ma per questi ultimi non credo vi sia importanza).
Ho portato tutti e due i database (sia quello vuoto.sdf che quello pieno.accdb) come dataset in una form creando un button evento per dare il via al trasferimento, però non riesco a scrivere un codice che mi faccia il passaggio dei dati da un database all'altro.(si tratta di circa 250 righe x 13 colonne)
qualcuno può darmi una dritta?
grazie mille!
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Una volta riempito il database access, effettua un Update sull'altro attraverso il table adapter. Se hai creato le connessioni con il wizard, sarà anche presente nei controlli della toolbox un [NomeDatabase]TableAdapter, che gestisce i trasferimenti di dati da dataset e database e viceversa. Questo espone una funzione Update, alla quale bisogna passare come parametro un dataset o una tabella: se tu passi il dataset o la datatable caricati dall'altro database (access) trasferirai nell'sdf gli stessi dati.
|
|
xone2003 (Normal User)
Rookie
Messaggi: 32
Iscritto: 27/11/2008
|
Un pò di codice riusciresti a postarlo?
Ci ho provato col table adapter...ma niente..
Ho trascinato le due tabelle nel dataset e volendo posso inserire anche la qry di update dato che la fa in automatico....
Attribuisce dei "?" ai valori da inserire..
Poi da codice dovrei dare un valore a quei "?" ?
Come posso riferire che ad esempio nella colonna "giorno" del database vuoto devono essere inseriti tutti i valori della colonna "Giorno1" presenti nell'altra tabella...e così via?
Ho presente come inserire con l' "insert to" dei valori nel database presi da varie text box, ma un inserimento massivo nisba!
grazie per l'aiuto
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Se sai usare insert, allora usalo. Basta che invece da textbox leggi i valori dalla tabella caricata da access, non cambia niente.
|
|
xone2003 (Normal User)
Rookie
Messaggi: 32
Iscritto: 27/11/2008
|
Ci ho provato...ma niente da fare.
Nel codice mi sottolinea come errore
"impossibile convertire il valore di tipo 'system.data.enumerablerowcollection(ofDate)'in'Date?'
la variabile l'ho attribuita così:
codice:
Dim Dat = From riga As DatiExcelDataSet.DatiExcelRow In Me.DatiExcelDataSet.DatiExcel _
Select riga.Data
InsertinDatiBici.ImportQuery1(Dat)
ImportQuery1 nel table adapter =
INSERT INTO DatiBici
(Data)
VALUES (@p1)
i campi data nelle due tabelle hanno lo stesso formato.
Sicuramente ho sbagliato qualcosa ma non ne vengo a capo!
Probabilmente così come l'ho inserita presuppone l'inserimento di una sola riga e non tutte quante?
non ho proprio idea.
|
|
xone2003 (Normal User)
Rookie
Messaggi: 32
Iscritto: 27/11/2008
|
Non ci riesco, non riesco ad importare i dati.
|
|
ventu (Normal User)
Newbie
Messaggi: 17
Iscritto: 10/12/2008
|
Io conosco il c#
ma prima cosa devi creare la tabella con una query
CREATE TABLE nometabella (Colonna1 , Colonna2 ecc..)
Creata la tabella
leggi il primo database
fai un ciclo che scorre le righe e fai un insert:
"INSERT INTO NomeTabellaCreata(Colonna1,Colonna2, ecc..) VALUES(@Valore1,@Valore1, ecc..)";
utilizzando i paremetri inserisic i dati che vuoi.
hai il datarow del vecchio database row["nomecolonna"] il valore lo metti nel parametro che ti interessa e il gioco e fatto.
spreo di esserti stato di aiuto
ciao
Ultima modifica effettuata da ventu il 15/01/2009 alle 17:22 |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Postato originariamente da xone2003:
Ci ho provato...ma niente da fare.
Nel codice mi sottolinea come errore
"impossibile convertire il valore di tipo 'system.data.enumerablerowcollection(ofDate)'in'Date?'
la variabile l'ho attribuita così:
codice:
Dim Dat = From riga As DatiExcelDataSet.DatiExcelRow In Me.DatiExcelDataSet.DatiExcel _
Select riga.Data
InsertinDatiBici.ImportQuery1(Dat)
ImportQuery1 nel table adapter =
INSERT INTO DatiBici
(Data)
VALUES (@p1)
i campi data nelle due tabelle hanno lo stesso formato.
Sicuramente ho sbagliato qualcosa ma non ne vengo a capo!
Probabilmente così come l'ho inserita presuppone l'inserimento di una sola riga e non tutte quante?
non ho proprio idea. |
Come dice chiaramente il messaggio di errore, stai usando una collezione di date come se fosse una data sola. La query LINQ restituisce un oggetto particolare che, in parole semplice, è come un array di valori, in questo caso di date. Se vuoi inserire solo la prima userai Data(0), altrimenti userai un ciclo. |
|
xone2003 (Normal User)
Rookie
Messaggi: 32
Iscritto: 27/11/2008
|
Ok , confusione totale!
ho pensato di fare un passo alla volta; conteggio delle righe del database "pieno" e poi con un ciclo for next ripeto l'operazione "insert to" tante volte quanto al n° di righe nel database vuoto.
ho inserito il database "pieno" ("datiexcel.accdb" con tabella di dati da cui importare "datitot") nella soluzione creando un datiexceldataset ed un datitottableadapter.
Nell'anteprima del datitottableadapter mi visualizza correttamente (con select *) tutti i dati del database (202rig x 15col) ma quando inserisco il codice sottostante mi risponde con "0" (zero), come se fosse vuoto.
Codice sorgente - presumibilmente VB.NET |
Dim Controllo = (From riga As DatiExcelDataSet.DatiTotRow In Me.DatiExcelDataSet.DatiTot _ Select riga).Count MsgBox(Controllo)
|
(ho provato anche togliendo le parentesi ed il .count mettendo controllo.count nel msgbox ma niente da fare)
teoricamente dovrebbe darmi 202 che è il numero di righe del database, al quale numero farò riferimento col ciclo for per l'import delle righe.
come principio d'inserimento ci siamo o sono fuori strada?
ho sbagliato qualcosa nel codice scritto sopra dato che non riesco a contare le righe del database?
grazie.
Ultima modifica effettuata da xone2003 il 16/01/2009 alle 18:43 |
|