Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - VB.Net - Import e popolazione database da codice
Forum - C# / VB.NET - VB.Net - Import e popolazione database da codice

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
xone2003 (Normal User)
Rookie


Messaggi: 32
Iscritto: 27/11/2008

Segnala al moderatore
Postato alle 17:04
Lunedì, 22/12/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!

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:21
Martedì, 23/12/2008
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.

PM Quote
Avatar
xone2003 (Normal User)
Rookie


Messaggi: 32
Iscritto: 27/11/2008

Segnala al moderatore
Postato alle 15:28
Martedì, 23/12/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

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:20
Mercoledì, 24/12/2008
Se sai usare insert, allora usalo. Basta che invece da textbox leggi i valori dalla tabella caricata da access, non cambia niente.

PM Quote
Avatar
xone2003 (Normal User)
Rookie


Messaggi: 32
Iscritto: 27/11/2008

Segnala al moderatore
Postato alle 12:43
Mercoledì, 24/12/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.

PM Quote
Avatar
xone2003 (Normal User)
Rookie


Messaggi: 32
Iscritto: 27/11/2008

Segnala al moderatore
Postato alle 8:21
Giovedì, 15/01/2009
Non ci riesco, non riesco ad importare i dati.:d:d:d

PM Quote
Avatar
ventu (Normal User)
Newbie


Messaggi: 17
Iscritto: 10/12/2008

Segnala al moderatore
Postato alle 17:21
Giovedì, 15/01/2009
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
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 20:17
Giovedì, 15/01/2009
Testo quotato

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.

PM Quote
Avatar
xone2003 (Normal User)
Rookie


Messaggi: 32
Iscritto: 27/11/2008

Segnala al moderatore
Postato alle 18:38
Venerdì, 16/01/2009
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

  1. Dim Controllo = (From riga As DatiExcelDataSet.DatiTotRow In Me.DatiExcelDataSet.DatiTot _
  2.         Select riga).Count
  3.  
  4.  
  5.         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.:d

Ultima modifica effettuata da xone2003 il 16/01/2009 alle 18:43
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo