Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
Update su DB fallisce
giovedì 30 giugno 2005 - 16.40
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
temerario
Profilo
| Junior Member
58
messaggi | Data Invio:
gio 30 giu 2005 - 16:40
Ciao a tutti
Mi trovo con questo grosso problema.
Ho una Sub per l'aggiornamento di alcuni dati sul DB.
Private Sub UpdateCorpo(ByVal trn As MySqlTransaction, ByVal id_testa As Int64)
Dim conn As MySqlConnection = CType(getStrConnection("conn"), MySqlConnection)
Dim dt As DataTable = CType(Session("dt"), DataTable)
Dim insertCorpo As String = "INSERT INTO documento_corpo (codice" & _
",id_testa" & _
",fornitore" & _
",produttore" & _
",articolo" & _
",varieta" & _
",misura" & _
",grado" & _
",tipo_imballo" & _
",quantita_box" & _
",quantita_um_x_box" & _
",quantita_um" & _
",data_consegna" & _
",luogo_arrivo" & _
",cliente_fornitore" & _
",prezzo_unitario" & _
",sconto" & _
",totale" & _
",utente) VALUES (" & _
"?codice" & _
",?id_testa" & _
",?cfornitore" & _
",?cproduttore" & _
",?carticolo" & _
",?cvarieta" & _
",?cmisura" & _
",?cgrado" & _
",?ctipo_imballo" & _
",?quantita_box" & _
",?quantita_um_x_box" & _
",?quantita_um" & _
",?data_consegna" & _
",?cluogo_arrivo" & _
",?ccliente_fornitore" & _
",?prezzo_unitario" & _
",?sconto" & _
",?totale" & _
",?utente)"
Dim da As New MySqlDataAdapter
Dim cmdInsertCorpo As MySqlCommand
' da.UpdateCommand = cmdUpdateCorpo
'' InsertCommand
cmdInsertCorpo = conn.CreateCommand
cmdInsertCorpo.CommandText = insertCorpo
cmdInsertCorpo.Transaction = trn
cmdInsertCorpo.Parameters.Add(New MySqlParameter("codice", MySqlDbType.Int64, 10, "codice"))
cmdInsertCorpo.Parameters.Add(New MySqlParameter("id_testa", MySqlDbType.Int64, 10)).Value = id_testa
cmdInsertCorpo.Parameters.Add(New MySqlParameter("cfornitore", MySqlDbType.VarChar, 6, "cfornitore"))
cmdInsertCorpo.Parameters.Add(New MySqlParameter("cproduttore", MySqlDbType.VarChar, 6,
totti240282
Profilo
| Guru
1.574
messaggi | Data Invio:
gio 30 giu 2005 - 17:03
che errore ti da ???
C'è solo un capitano !!!!!!
temerario
Profilo
| Junior Member
58
messaggi | Data Invio:
gio 30 giu 2005 - 17:34
non ho un errore di codice ma essendoci sulla tabella delle FK mi fallisce
da.Update(dt)
Se vado però a controllare i parametri dal DA sono vuoti... come se non li legge dal datatable che però dopo averli presi dalla session sono valorizzati bene.
Babi
Profilo
| Junior Member
197
messaggi | Data Invio:
gio 30 giu 2005 - 18:27
Ciao, non ho capito bene.. comunque ti mando un esempio "accorciato" funzionante di scrittura sul DB simile alla tua. Prova a vedere se ci sono differenze.
Public InsertContratto As New String("INSERT INTO mail_sous_contratto (cod_applicativo, " & _
"cod_societa, " & _
"tipo_lettera, " & _
"key_link ) " & _
"VALUES (?,?,?,?)")
Dim cmdInsertContratto As New OleDb.OleDbCommand
With cmdInsertContratto
.CommandText = cls_c.InsertContratto ' istruzione di insert into...
.Parameters.Add("@cod_applicativo", strFormat.Char, 2, "cod_applicativo").Value = cls_c.cod_applicativo
.Parameters.Add("@cod_societa", strFormat.Char, 3, "cod_societa").Value = cls_c.cod_societa
.Parameters.Add("@tipo_lettera", strFormat.Char, 2, "tipo_lettera").Value = cls_c.tipo_lettera
.Parameters.Add("@key_link", strFormat.Integer).Value = numKey
'
.Connection = conn
End With
If (conn.State = ConnectionState.Closed) Then conn.Open()
cmdinscnt.ExecuteNonQuery()
conn.Close()
temerario
Profilo
| Junior Member
58
messaggi | Data Invio:
gio 30 giu 2005 - 18:34
ma io ne ho fatti tanti altri inserimenti e non ho mai avuto pbl.
Su questo non so perchè....
Nell'esempio che hai postato tu valorizzi con il .Value... mentre io no
Babi
Profilo
| Junior Member
197
messaggi | Data Invio:
gio 30 giu 2005 - 18:52
allora se hai sempre fatto così ed ha sempre funzionato non saprei.
avrai qualche situazione strana sulla macchina o qualche condizione
alrettanto strana a programma.
ciao :(
temerario
Profilo
| Junior Member
58
messaggi | Data Invio:
gio 30 giu 2005 - 23:30
Ho analizzato meglio il codice e mi sono reso conto di che il pbl non è nei dati sporchi.
ho questa SUB che poi chiama Update:
Dim conn As MySqlConnection = Type(getStrConnection("conn"),MySqlConnection)
Dim trn As MySqlTransaction
Dim dt As DataTable = CType(Session("dt"), DataTable)
Dim cmdInsertTesta As MySqlCommand
Dim cmdAuto As MySqlCommand
Dim insertTesta as String = "....."
Try
If dt.Rows.Count <> 0 Then
conn.Open()
trn = conn.BeginTransaction
cmdInsertTesta = conn.CreateCommand
cmdInsertTesta.CommandText = insertTesta
cmdInsertTesta.Transaction = trn
CREO I VARI PARAMETRI
cmdInsertTesta.ExecuteNonQuery()
UpdateCorpo(trn, id_testa)
trn.Commit()
Session.Remove("dt")
Else
......
End If
Catch Exc As MySqlException
trn.Rollback()
Catch exc As DBConcurrencyException
trn.Rollback()
End Try
In UpdateCorpo ho:
Private Sub UpdateCorpo(ByRef trn As MySqlTransaction, ByVal id_testa As Int64)
Dim conn As MySqlConnection = CType(getStrConnection("conn"), MySqlConnection)
Dim dt As DataTable = CType(Session("dt"), DataTable)
Dim updateCorpo As String = "...."
Dim da As New MySqlDataAdapter
Dim cmdUpdateCorpo As MySqlCommand
cmdUpdateCorpo = conn.CreateCommand
cmdUpdateCorpo.CommandText = updateCorpo
cmdUpdateCorpo.Transaction = trn
CREO I VARI PARAMETRI
da.UpdateCommand = cmdUpdateCorpo
IDEM PER INSERT
da.Update(dt)
End Sub
Succede che fallisce perchè nel corpo c'è una FK di un campo testa. Se elimino la FK funziona ma effettivamente il pbl è che non mi scrive il record di testa.
Come mai? come mi devo comportare con le connessioni e le transazione in questo caso che chiamo una Sub.
SPero di essere stato chiaro.
Ciao
Torna su
Stanze Forum
Elenco Threads
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 !