+ Rispondi al messaggio
Pagina 2 di 3 primaprima 123 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 22

Accesso a database .dbf foxpro

  1. #11
    cris77 non  in linea Scolaretto
    Ho provato ma ora mi da il seguente errore:

    La OleDbTransaction  completata e non pu pi essere utilizzata.
    
    non capisco il perch...

  2. #12
    L'avatar di SirJo
    SirJo non  in linea Scolaretto
    perch hai iniziato la transazione fuori dal ciclo FOR mentre poi la chiudi dentro al ciclo FOR

  3. #13
    cris77 non  in linea Scolaretto
    si hai ragione SirJo..... ora funziona perfettamente:

    
      Dim cn As OleDbConnection
    
            cn = New OleDbConnection("Provider=vfpoledb.1;Data Source=C:\VTAM200701\VTAMDBF\;;Exclusive=false;Nulls=false")
    
    cn.Open()
    
    Dim tra As OleDbTransaction = Nothing
            Try
    
                Dim query As String = "INSERT INTO Docum(dosigpos, doannpos, donumpos, dotratta, dodatins, donumart, docontat, docoddoc, donumdoc, dodatdoc, dotrasmi, donote, docampo1, docampo2, dolinea, dotest1, dotest2, dotest3, dotest4, dotest5, dotest6, dovalor1, dovalor2, dodata1, dodata2, dointerno) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
    
                For Each row As DataGridViewRow In DataGridView1.Rows
    
    
                    '*** Avvia transazione ***'  
                    tra = cn.BeginTransaction(IsolationLevel.ReadUncommitted)
    
                    If Not row.IsNewRow Then
    
                  Dim cmd As OleDbCommand = New OleDbCommand(query)
    
                        cmd.Connection = cn
    
    
                       
    
                        cmd.Transaction = tra
    
    
                        cmd.Parameters.AddWithValue("@dosigpos", row.Cells(6).Value)
                        cmd.Parameters.AddWithValue("@doannpos", row.Cells(7).Value)
                        cmd.Parameters.AddWithValue("@donumpos", row.Cells(5).Value)
                        cmd.Parameters.AddWithValue("@dotratta", 0)
                        cmd.Parameters.AddWithValue("@dodatins", row.Cells(0).Value)
                        cmd.Parameters.AddWithValue("@donumart", row.Cells(8).Value)
                        cmd.Parameters.AddWithValue("@docontat", 0)
                        cmd.Parameters.AddWithValue("@docoddoc", "N380")
                        cmd.Parameters.AddWithValue("@donumdoc", Trim(row.Cells(4).Value) & " " & Trim(row.Cells(1).Value))
                        cmd.Parameters.AddWithValue("@dodatdoc", #1/12/1899#)
                        cmd.Parameters.AddWithValue("@dotrasmi", " ")
                        cmd.Parameters.AddWithValue("@donote", " ")
                        cmd.Parameters.AddWithValue("@docampo1", " ")
                        cmd.Parameters.AddWithValue("@docampo2", " ")
                        cmd.Parameters.AddWithValue("@dolinea", " ")
                        cmd.Parameters.AddWithValue("@dotest1", " ")
                        cmd.Parameters.AddWithValue("@dotest2", " ")
                        cmd.Parameters.AddWithValue("@dotest3", row.Cells(9).Value)
                        cmd.Parameters.AddWithValue("@dotest4", " ")
                        cmd.Parameters.AddWithValue("@dotest5", row.Cells(2).Value)
                        cmd.Parameters.AddWithValue("@dotest6", " ")
                        cmd.Parameters.AddWithValue("@dovalor1", Year(MaskedTextBox1.Text))
                        cmd.Parameters.AddWithValue("@dovalor2", row.Cells(3).Value)
                        cmd.Parameters.AddWithValue("@dodata1", #1/12/1899#)
                        cmd.Parameters.AddWithValue("@dodata2", #1/12/1899#)
                        cmd.Parameters.AddWithValue("@dointerno", 0)
    
    
    
    
                        cmd.ExecuteNonQuery()
    
                        tra.Commit()
    
    
                    End If
    
                Next
    
                MsgBox("Records inseriti correttamente")
    
            Catch ex As Exception
                MsgBox(ex.Message)
              
    
                tra.Rollback()
            End Try
    
    
    
            cn.Close()
            cn = Nothing
    
    Ho postato il codice per completezza, spero sia corretto...
    grazie ancora

  4. #14
    Sgrubak non  in linea Scribacchino
    Quote Originariamente inviato da cris77 Visualizza il messaggio
    spero sia corretto...
    Credo non sia molto indicato creare molteplici transazioni, inserire un riga valorizzata male, e poi effettuare il commit.

    Piuttosto creerei una transazione, inserirei tutte le righe (utilizzando correttamente i parametri e non come stai facendo) e infine effettuerei il commit.

    La chiamata al Dispose del Command? E la chiamata alla Dispose delle Connection? Meglio i blocchi Using, cos ti eviti pure il Try... Catch.

  5. #15
    cris77 non  in linea Scolaretto
    il database che utilizzo non mio ma di un software elaborato in Visual Fox Pro nell'azienda in cui lavoro e ti assicuro che se potessi ne farei anche a meno, quindi i dati che a te sembrano non corretti per quel programma lo sono (nemmeno io ne capisco il significato di alcuni di essi) ma purtroppo per inserire i records nella tabella devo compilarli con questi dati.
    Piuttosto creerei una transazione, inserirei tutte le righe (utilizzando correttamente i parametri e non come stai facendo) e infine effettuerei il commit.
    Sinceramente non so nulla di transazioni e non ho capito nemmeno cosa intendi ....non conosco altri modi per utilizzare i parametri.

    La chiamata al Dispose del Command? E la chiamata alla Dispose delle Connection? Meglio i blocchi Using, cos ti eviti pure il Try... Catch.
    riguardo questo posso verificare

  6. #16
    L'avatar di SirJo
    SirJo non  in linea Scolaretto
    Stai facendo un po' di confusione.
    Non si stava parlando dei dati, ovvio che nel database ci metti i dati che vuoi tu, stavamo parlando del fatto che ad ogni riga che devi inserire apri una transazione e la chiudi, se ha 100 righe da inserire apri e chiudi 100 transazioni e questo non ha molto senso, anzi potrebbe darti dei problemi.
    Dovresti quindi spostare la riga dove apri la transazione e metterla prima del ciclo FOR, e spostare la riga dove fai il commit e metterla dopo il NEXT in modo che apri una transazione, fai tutto quello che devi fare e poi la chiudi, per cui lo farai una sola volta
    Ultima modifica di SirJo; 01-07-2021 14:12 

  7. #17
    cris77 non  in linea Scolaretto
    grazie del suggerimento SirJo sei stato decisamente pi chiaro!

    Non sto facendo confusione ma sto rispondendo ad un commento che si ricollega ad un 'altro mio post:
    Ora, tralasciando l'inutilit (a mio avviso) di aggiungere un parametro tipo
    1
    cmd.Parameters.AddWithValue("@dotratta", 0)
    fatto sempre dalla stessa persona ....

  8. #18
    Sgrubak non  in linea Scribacchino
    Quote Originariamente inviato da cris77 Visualizza il messaggio
    Non sto facendo confusione
    Su questo mi permetto di dissentire. O non hai capito il codice che hai scritto, o non sai usare gli oggetti che hai usato. Per piantare un chiodo, puoi anche usare un martello brandendolo dalla parte della testa e picchiare col manico. Solo perch si pianta, non vuol dire che hai fatto un buon lavoro. Cercavo di darti spunti per ragionare sull'uso dei parametri, senza fornirti il codice bello e fatto. Ma non son riuscito a spiegarmi, evidente. Si potrebbe ragionare anche sulla creazione di molteplici Command, ad esempio...

    Quote Originariamente inviato da cris77 Visualizza il messaggio
    fatto sempre dalla stessa persona ....
    Eh... Lo conosco quello li. Ha la laurea in informatica presa alla Youtube University e viene qui solo per scrivere post a casaccio. Lascialo perdere, dai retta.

  9. #19
    cris77 non  in linea Scolaretto
    Premetto che non so nulla di transazioni e se fosse per questo forum non avrei mai saputo dell' esistenza... Inoltre ho provato a documentarmi ma sinceramente non le ho ancora comprese... Si trova (o almeno io non trovo) poco al riguardo e sopratutto spiegate male....
    Cercavo di darti spunti per ragionare sull'uso dei parametri, senza fornirti il codice bello e fatto
    Non cercavo il codice pronto ma solo indicazioni chiare di come usare le transazioni.
    Figuriamoci poi gli spunti sono sempre ben accetti sopratutto per principianti come me che hanno voglia di imparare.☺
    Quindi sarebbe preferibile utilizzare, a mio avviso, un linguaggio pi comprensibile e non troppo tecnico con chi come me non ha una solida base del linguaggio Visual Basic .net

  10. #20
    L'avatar di Max.Riservo
    Max.Riservo non  in linea Scribacchino
    Quote Originariamente inviato da cris77 Visualizza il messaggio
    ...
    Quindi sarebbe preferibile utilizzare, a mio avviso, un linguaggio pi comprensibile e non troppo tecnico con chi come me non ha una solida base del linguaggio Visual Basic .net
    Purtroppo o per fortuna questo un forum tecnico quindi sei tu che devi innalzare il tuo livello e non viceversa ...

+ Rispondi al messaggio
Pagina 2 di 3 primaprima 123 ultimoultimo

Potrebbero interessarti anche ...

  1. Accesso Esclusivo Database
    Da Happo nel forum Microsoft Access
    Risposte: 7
    Ultimo Post: 01-02-2018, 11:12
  2. accesso al database ed errori
    Da piruet nel forum MySQL
    Risposte: 0
    Ultimo Post: 04-07-2013, 11:26
  3. Accesso a database
    Da Main nel forum C#
    Risposte: 2
    Ultimo Post: 09-08-2008, 15:37
  4. Errore accesso database
    Da iltheo nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 21-03-2008, 14:47
  5. Vb6 E Database Foxpro 8 - Dati Stringa Letti In Binario
    Da PITSOFT nel forum Visual Basic 6
    Risposte: 0
    Ultimo Post: 10-01-2008, 20:30