Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [vbnet] salvare record in access
Forum - C# / VB.NET - [vbnet] salvare record in access

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
piter123 (Normal User)
Pro


Messaggi: 141
Iscritto: 21/05/2008

Segnala al moderatore
Postato alle 18:56
Martedì, 20/11/2012
salve, esiste un metodo più veloce al banalissimo codice che ho scritto
per salvare una certa quantità di record ?
Grazie

Dim I As Integer
        Dim con As New OleDbConnection
        con.ConnectionString = "provider= Microsoft.jet.oledb.4.0; data source =" & _
                               Application.StartupPath & "\Prova.mdb"
        con.Open()
        Dim cmd As New OleDbCommand
        cmd.Connection = con
        cmd.CommandType = CommandType.Text
        For I = 1 To 3000
            cmd.CommandText = "UPDATE tab1 SET " _
            & "C1 = '" & Sto(1, 1, I, 1) & "', " _
            & "C2 = '" & Sto(1, 1, I, 2) & "', " _
            & "C3 = '" & Sto(1, 1, I, 3) & "', " _
            & "C4 = '" & Sto(1, 1, I, 4) & "' " _
            & "WHERE id = " & I
            cmd.ExecuteNonQuery()
        Next
        con.Close()

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:33
Martedì, 20/11/2012
Dipende da quello che fa la funzione

Sto

di cui non sappiamo nulla


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
piter123 (Normal User)
Pro


Messaggi: 141
Iscritto: 21/05/2008

Segnala al moderatore
Postato alle 21:48
Martedì, 20/11/2012
sto è una matrice con queste dimensioni sto(7,4,5000,4) che viene generata dall'unione di altre matrici.
Il codice sotto descritto è una parte di un ciclo che dovrà salvare i record in 7 * 4 = 28 tabelle access.
Da quì se ci impiega cirva 15 secondi a salvare una singola tabelle ne evince che 15 secondi * 28 tabelle diventa un tempo spropositato.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:58
Martedì, 20/11/2012
Perdona la domanda ... ma a cosa servono 28 tabelle !? E che dati ci metti dentro ??

Non ho mai incontrato in vita mia un db fatto in questo modo ... molto probabilmente stai affrontando in maniera sbagliata il tuo problema ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
piter123 (Normal User)
Pro


Messaggi: 141
Iscritto: 21/05/2008

Segnala al moderatore
Postato alle 8:21
Mercoledì, 21/11/2012
  si tratta di uno storico dati, 7  rilevazioni a tempi diversi.
per cui la matrice sto(7 titoli, 4 rilevazioni diverse, 5000 la qtà dei dati, 4 i tipi di dati) .
Li devo poi salvare su tabelle diverse e precisamente su 1 tabella per ogni titolo
con relativo tempo di rilevazione per cui 7*4 = 28 tabelle, ogni tabella ha al suo interno
5000 righe (qta dati) disposte su 4 colonne (tipo di dato).
Prima li salvavo in txt e ci impiegava una sciocchezza in termini di tempo, mi piacerebbe però
ora poterli salvare in access, più facili da consultare visivamente, ma in access con il codice che ho scritto ci impiega una marea di tempo.



Ultima modifica effettuata da piter123 il 26/11/2012 alle 7:17
PM Quote
Avatar
piter123 (Normal User)
Pro


Messaggi: 141
Iscritto: 21/05/2008

Segnala al moderatore
Postato alle 10:39
Mercoledì, 21/11/2012
dunque...
la tabella access in realtà ha 5000 righe, di queste 5000 non ho realmente la necessità di
riscriverle con record diversi, ma ad esempio ho la necessità di spostare i record che vanno
dalla riga 1 alla riga 5000 nella pozione dalla riga 10 alla riga 4990 perdendo quindi le ultime
10 righe (in sostanza ho bisogno di traslarle per esempio di 10 righe), mi restano quindi libere
le prime 10 righe dove andrò a scrivere i record con i nuovi dati.

Potrebbe essere più veloce una soluzione di questo tipo ? e se si esiste un comando che mi
sposti in blocco i record delle righe ?

Grazie

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:57
Mercoledì, 21/11/2012
Parli di "posizioni" di righe in un DB ma la cosa non ha alcun senso.

In un DB di tipo relazionale la posizione fisica delle righe non ha (e non deve avere) nessuna importanza.

Fammi un esempio di alcuni record ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
piter123 (Normal User)
Pro


Messaggi: 141
Iscritto: 21/05/2008

Segnala al moderatore
Postato alle 13:43
Mercoledì, 21/11/2012
adesso per esempio:

ID, C1, C2, C3, C4
1    11   15  18  3
2    10   56   67  8
3    4      7   2    1
4    61    6   8    2
5     2     7   8    12
6    27    32  15  19
     ...
5000  4   89   21  3


dopo:  sposto i record  oppure rinomino id e aggiungo righe vuote.
Poi dentro le righe vuote ci inserisco i record


ID, C1, C2, C3, C4
1
2
3
4    11   15  18  3
5    10   56   67  8
6    4      7   2    1
7    61    6   8    2
8     2     7   8    12
9    27    32  15  19
     ...
5000  34   33  5  3



PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:30
Mercoledì, 21/11/2012
Sì ma perché non aggiungi semplicemente i record?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo