Newsgroup: it.comp.lang.visual-basic
Titolo: Inserimento dati in rete su mdb

Ho un problema che mi affligge:
Ho migrato una app. in vb che scrive dati in un file di access ad ADO in
previsione do porting dei dati su sql server o altrro simile.
Un file dove vengono inserite le righe ordine non si comporta piu' a dovere.
Quando appendo una nuova riga all'ordine vengono fissati i parametri base
della verifica dell'integrita' ( numero ordine e anno ordine ) mentre  il
resto viene aggiunto immediatamente dopo con la routine che uso per scrivere
i dati quando questi vengono modificati ( mi sembra piu' razionale in quanto
la ruotine di scritture e' unica invece di averne due ) ma quando si
aggiunge nuovo record a volte capita che la restante parte dei dati viene
scritta non sul record aggiunto ma sul record corrente.
Allego sorgente
Ciao
Stefano
' Se record nuovo
If boolAddNew Then
        rcsTord.Open strSql, objAdoConnections, adOpenDynamic,
adLockOptimistic
        rcsRord.Open strSqlROrd, objAdoConnections, adOpenKeyset,
adLockOptimistic
        objAdoConnections.BeginTrans
        rcsRord.AddNew
        rcsRord!anno = rcsTord!anno
        rcsRord!codforn = rcsTord!codforn
        rcsRord!nordf = rcsTord!nordf
        rcsRord.Update
        rcsRord.Close
        objAdoConnections.CommitTrans
        aggDataControl strSqlROrd
        dbOrdRiga.Recordset.MoveLast
        SetFile
        rcsTord.Close
        boolAddNew = False
Else
    SetFile
End If
 Allego anche setfile
Private Sub SetFile()
Dim rcsArtLoc As New ADODB.Recordset
Dim rcsArtList As New ADODB.Recordset
Dim strSqlList As String
Dim strSqlLoc As String
If ActiveErr Then On Error Resume Next
' Da modificare
strSqlLoc = "SELECT * FROM codart WHERE codart = '" + txtordrg(4) + "'"
strSqlList = "SELECT * FROM listforn WHERE strcodart= '" + txtordrg(4) + "'"
strSqlList = strSqlList + " AND strcodforn= '" +
dbOrdRiga.Recordset("codforn") + "'"
rcsArtList.Open strSqlList, objAdoConnections, adOpenKeyset,
adLockOptimistic
rcsArtLoc.Open strSqlLoc, objAdoConnections, adOpenKeyset, adLockOptimistic
'controllo se esiste nel listino, in caso negativo lo inserisco
If rcsArtList.EOF Then
   If txtordrg(4) <> "" And txtordrg(8) <> "" And txtordrg(10) <> "" Then
        If MsgBox("Aggiungere la quotazione in oggetto al listino
fornitori?", vbYesNo) = vbYes Then
            rcsArtList.AddNew
            rcsArtList!strCodForn = dbOrdRiga.Recordset("codforn")
            rcsArtList!strCodArt = txtordrg(4)
            rcsArtList!intLotto = CDbl(txtordrg(8))
            rcsArtList!intPrezzo = CDbl(txtordrg(10))
            rcsArtList!data_agg = Date
            rcsArtList.Update
        End If
    End If
Else
    If rcsArtList!intLotto <> CDbl(txtordrg(8)) Then
        If MsgBox("Aggiorno lotto di ordine per questo articolo?", vbYesNo)
= vbYes Then
            rcsArtList!intLotto = CDbl(txtordrg(8))
            rcsArtList!data_agg = Date
            rcsArtList.Update
        End If
    End If
    If rcsArtList!intPrezzo <> CDbl(txtordrg(10)) Then
        If MsgBox("Aggiorno prezzo per questo articolo?", vbYesNo) = vbYes
Then
            rcsArtList!intPrezzo = CDbl(txtordrg(10))
            rcsArtList!data_agg = Date
            rcsArtList.Update
        End If
    End If
End If
rcsArtList.Close


Scusa ma non ho proprio capito.
1) Nella Setfile non tocchi affato le righe ordine, no?
2) dbOrdRiga.Recordset.MoveLast  che diavolo fa?
3) aggDataControl strSqlROrd perchè viene eseguita -prima- della fine
inserimento dati (se è vero che la fai dopo)?
ciao
ugo