Scrittura su disco.

giovedì 11 ottobre 2007 - 09.22

secks Profilo | Senior Member

In un pc in cui ho installato un programmino in vb.net 2003 su windows con base dati Access mi accade che qualche volta sembra che tutto funzioni perfettamente, ma alla fine non ha scritto sul database con la conseguente perdita di dati.

Penso che il PC abbia impostato la memoria in modo non corretto.

Cmq qualcuno sa dirmi se c'è un comando in vb che permetta di scrivere immediatamente su disco le operazioni su database?

Ciao a tutti.
Paolo.

SSUPERPIPPO Profilo | Guru

>In un pc in cui ho installato un programmino in vb.net 2003 su
>windows con base dati Access mi accade che qualche volta sembra
>che tutto funzioni perfettamente, ma alla fine non ha scritto
>sul database con la conseguente perdita di dati.
>
>Penso che il PC abbia impostato la memoria in modo non corretto.
>
>Cmq qualcuno sa dirmi se c'è un comando in vb che permetta di
>scrivere immediatamente su disco le operazioni su database?
>
>Ciao a tutti.
>Paolo.

Non dipende sicuramente da Windows ne tantomeno dal tuo PC, il problema stà senza dubbio sul programma.
E' da capire se lavori in modalità connessa o disconnessa?!?
Dovresti postare il codice che utilizzi per il salvataggio dei dati in modo da poter individuare l'intoppo.


http://blogs.dotnethell.it/alebadalin

pieroalampi Profilo | Expert

esiste anche un altra ipotesi, cioe i permessi su cartella, che utente hai impostato? administator? o altro? sei in una rete con dominio?
vb.net 2005
------------------------------------------------------
::::Sempre a manetta in curva::::
------------------------------------------------------

secks Profilo | Senior Member

Modalità disconnessa:

dim sSql as string = "UPDATE GesFatTestate SET fat_ndo='0000000422', fat_ddo=#10/11/2007# WHERE fat_num='0000004034'"

Public Function SqlWrite(ByVal sDcn As String, ByVal sSql As String)

Dim b As Boolean = True
Dim dcnApv As OleDbConnection = New OleDbConnection(sDcn)
dcnApv.Open()

Dim cmdApv As OleDbCommand = New OleDbCommand(sSql, dcnApv)

Try
cmdApv.ExecuteNonQuery()
Catch exp As Exception
MsgBox("Errore su " & sSql & ": " & exp.Message, MsgBoxStyle.Critical)
b = False
End Try

cmdApv.Dispose()
dcnApv.Dispose()

Return b

End Function

Ma il problema è successo una volta, ma ripetendo l'operazione non si è ripetuto.
Una volta eseguendo delle operazioni di massa sul PC in questione scriveva solo una parte dei dati, mentre sul mio portatile il loop andava + lento ma scriveva correttamente.

Una volta usavo un cmd di nome COMMIT, non esiste in VB.NET qualcosa di simile per essere sicuri che i dati in memoria siano trasferiti su disco?

Ciao.
Paolo.

SSUPERPIPPO Profilo | Guru

>Modalità disconnessa:
>
>dim sSql as string = "UPDATE GesFatTestate SET fat_ndo='0000000422',
>fat_ddo=#10/11/2007# WHERE fat_num='0000004034'"
>
>Public Function SqlWrite(ByVal sDcn As String, ByVal sSql As
>String)
>
> Dim b As Boolean = True
>Dim dcnApv As OleDbConnection = New OleDbConnection(sDcn)
> dcnApv.Open()
>
>Dim cmdApv As OleDbCommand = New OleDbCommand(sSql, dcnApv)
>
> Try
> cmdApv.ExecuteNonQuery()
> Catch exp As Exception
>MsgBox("Errore su " & sSql & ": " & exp.Message, MsgBoxStyle.Critical)
> b = False
> End Try
>
> cmdApv.Dispose()
> dcnApv.Dispose()
>
> Return b
>
> End Function
>
>Ma il problema è successo una volta, ma ripetendo l'operazione
>non si è ripetuto.
>Una volta eseguendo delle operazioni di massa sul PC in questione
>scriveva solo una parte dei dati, mentre sul mio portatile il
>loop andava + lento ma scriveva correttamente.
>
>Una volta usavo un cmd di nome COMMIT, non esiste in VB.NET qualcosa
>di simile per essere sicuri che i dati in memoria siano trasferiti
>su disco?
>
>Ciao.
>Paolo.
>

Mi spiace contraddirti ma la modalità che stai usando è connessa (per disconnessa si intende tramite l'utilizzo di DataSet).
Se esegui delle operazioni di massa sulla tua base dati, potrebbe essere utile usare la modalità disconnessa ed effettuare un Update alla fine delle operazione.
In questo modo snellisci l'operazione e hai meno problemi di sincronizzazione del database.

Dai un'occhiata sul mio forum (link qui sotto), trovi una classe per facilitarti la vita per gestire gli accessi al database.

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5