+ Rispondi al messaggio
Pagina 2 di 4 primaprima 1234 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 31

inserimento tipo di dato NUMERIC in database *.dbf VISUALFOXPRO

  1. #11
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da SirJo Visualizza il messaggio
    oppure usi i parametri
    Scusate se insisto ma a mio avviso l'uso dei parametri NON deve essere un opzione, ma l'unica vera soluzione.
    I forum sono pieni zeppi di questi problemi solo perché non si usano i Command con parametri.
    ℹ️ Leggi di più su gibra ...

  2. #12
    Sì, sono d'accordo anch'io Giorgio e ho detto che la strada dei Parametri è "preferibile" solo perché non conosco i tempi che il nostro amico può impiegare per convertire tutto il codice secondo questa filosofia, rapportato al tempo a disposizione per risolvere il problema contingente.

    Ovvero, ora gli si dice qual è il problema per risolvere la condizione che può bloccare la "produzione" e il modo di riprendere il funzionamento in breve.

    Poi si orienta alla risoluzione più "a lungo termine" ma "definitiva" con i parametri.

    Con tutta calma.
    ℹ️ Leggi di più su AntonioG ...

  3. #13
    cris77 non è in linea Scolaretto
    si è vero ho provato a formattare il campo con il valore decimale con il punto e non mi da più l'errore;
    il codice l'ho riscritto con il parametri in quanto è più pratico e leggibile, e in questo caso non devo convertire (credo nulla) anche perchè non mi da errore. Però non salva nulla nella tabella nessun dato .... come mai?
     Dim cn As OdbcConnection
            cn = New OdbcConnection("Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=C:\VTAM200701\VTAMDBF\;")
    
     cn.Open()
    
     For Each row As DataGridViewRow In DataGridView1.Rows
    
                If Not row.IsNewRow Then
        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 (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)"
    
    
     Dim cmd As OdbcCommand = New OdbcCommand(query, cn)
    
     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", row.Cells(4).Value)
     cmd.Parameters.AddWithValue("@dodatdoc", " ")
     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", " ")
     cmd.Parameters.AddWithValue("@dodata2", " ")
     cmd.Parameters.AddWithValue("@dointerno", vbFalse)
    
                    cmd.ExecuteNonQuery()
    
    
    
                    MsgBox("Record aggiornato correttamente")
    
                End If
    
            Next
    
            cn.Close()
            cn = Nothing
    
    Non vorrei dipendesse dal carattere "@" del parametro...

  4. #14
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Nella clausola VALUES della query devi elencare i nomi dei parametri, non i nomi dei campi.
    ℹ️ Leggi di più su Brontolo ...

  5. #15
    cris77 non è in linea Scolaretto
    è proprio li il problema... se metto il parametro nella query "@nomeparametro" da errore: "sintassi errata"
    Io ho sempre problemi con database di Visual FoxPro anche per una semplice query....

  6. #16
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da cris77 Visualizza il messaggio
    se metto il parametro nella query "@nomeparametro" da errore: "sintassi errata"
    Può essere che il driver di FoxPro non accetti i nomi dei parametri (named parameters), prova a sostituire i nome dei parametri con il punto interrogativo: ?
    Attenzione che la sequenza dei valori deve rispettare la sequenza dei campi indicati nella query.

    Comunque sarebbe meglio usare OLEDB, al posto di ODBC:
    OleDb Parameters to access FoxPro Data from .NET
    https://weblog.west-wind.com/posts/2...-Data-from-NET
    Ultima modifica di gibra; 18-06-2021 14:32 
    ℹ️ Leggi di più su gibra ...

  7. #17
    cris77 non è in linea Scolaretto
    Ciao gibra, ho apportato le modifiche come da tuo suggerimento:

    
            Dim cn As OleDbConnection
    
            cn = New OleDbConnection("Provider=vfpoledb.1;Data Source=C:\VTAM200701\VTAMDBF\;;Exclusive=false;Nulls=false")
     Dim tra As OleDbTransaction = Nothing
    
    
          
            cn.Open()
    
     For Each row As DataGridViewRow In DataGridView1.Rows
    
                If Not row.IsNewRow Then
    
    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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
    
    
                    
                    Dim cmd As OleDbCommand = New OleDbCommand(query)
                    cmd.Connection = cn
    
                    cmd.Parameters.AddWithValue("?", row.Cells(6).Value)
                    cmd.Parameters.AddWithValue("?", row.Cells(7).Value)
                    cmd.Parameters.AddWithValue("?", row.Cells(5).Value)
                    cmd.Parameters.AddWithValue("?", "0")
                    cmd.Parameters.AddWithValue("?", row.Cells(0).Value)
                    cmd.Parameters.AddWithValue("?", row.Cells(8).Value)
                    cmd.Parameters.AddWithValue("?", "0")
                    cmd.Parameters.AddWithValue("?", "N380")
                    cmd.Parameters.AddWithValue("?", row.Cells(4).Value)
                    cmd.Parameters.AddWithValue("?", " ")
                    cmd.Parameters.AddWithValue("?", " ")
                    cmd.Parameters.AddWithValue("?", " ")
                    cmd.Parameters.AddWithValue("?", " ")
                    cmd.Parameters.AddWithValue("?", " ")
                    cmd.Parameters.AddWithValue("?", " ")
                    cmd.Parameters.AddWithValue("?", " ")
                    cmd.Parameters.AddWithValue("?", " ")
                    cmd.Parameters.AddWithValue("?", row.Cells(9).Value)
                    cmd.Parameters.AddWithValue("?", " ")
                    cmd.Parameters.AddWithValue("?", row.Cells(2).Value)
                    cmd.Parameters.AddWithValue("?", " ")
                    cmd.Parameters.AddWithValue("?", Year(MaskedTextBox1.Text))
                    cmd.Parameters.AddWithValue("?", row.Cells(3).Value)
                    cmd.Parameters.AddWithValue("?", " ")
                    cmd.Parameters.AddWithValue("?", " ")
                    cmd.Parameters.AddWithValue("?", False)
    
    
                    cmd.ExecuteNonQuery()
                    MsgBox("Record aggiornato correttamente")
    
                   
    
    
    
    
                End If
    
            Next
    
            cn.Close()
            cn = Nothing
    
    Però mi restituisce questo errore:

    Data type mismatch
    
    Potrebbe essere dovuto ai campi che ho inserito manualmente tipo "N380" o "0" o false ?
    Ultima modifica di AntonioG; 18-06-2021 19:04  Motivo: Usa i tag CODE per il codice!

  8. #18
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da cris77 Visualizza il messaggio
    Potrebbe essere dovuto ai campi che ho inserito manualmente tipo "N380" o "0" o false ?
    Chi può dirlo?
    Nessuno di noi conosce la struttura della tua tabella.

    Comunque False è sbagliato a prescindere, devi indicare un valore accettato dal TIPO di campo che usi.

    False in un database non significa nulla, in teoria dovrebbe essere 0.
    ℹ️ Leggi di più su gibra ...

  9. #19
    Cris ... non vorrei ricordarti più di usare i tag CODE per il codice ... devo sempre cambiarli io e non ho sempre il tempo ...
    ℹ️ Leggi di più su AntonioG ...

  10. #20
    cris77 non è in linea Scolaretto
    AntonioG perdonami ho dimenticato ancora...
    Verifico di nuovo i dati del database e i dati da inserire.
    Nella tabella dell'ultimo campo scrive "false"... Forse hai ragione tu essendo booleano devo usare 0.

+ Rispondi al messaggio
Pagina 2 di 4 primaprima 1234 ultimoultimo

Potrebbero interessarti anche ...

  1. Risposte: 2
    Ultimo Post: 17-06-2021, 10:22
  2. Incompatibilità tra dato tipo testo di una cella e dato tipo string
    Da saveriomartino nel forum Microsoft Excel
    Risposte: 10
    Ultimo Post: 16-07-2015, 18:50
  3. tipo di dato per chiave primaria
    Da orpo970 nel forum Microsoft SQL Server
    Risposte: 3
    Ultimo Post: 27-06-2012, 20:47
  4. [c#] Tipo di dato in una textbox
    Da Zigo nel forum C#
    Risposte: 2
    Ultimo Post: 16-01-2006, 09:53
  5. controllo tipo di dato su textbox
    Da manupil nel forum Visual Basic 6
    Risposte: 9
    Ultimo Post: 13-03-2004, 10:39