22 messaggi dal 18 ottobre 2008
Inserimento nuova riga in tabella MS Access, valori prelevati da TextBox.
Codice:
Dim ConnCoint As New System.Data.OleDb.OleDbConnection()
ConnCoint.ConnectionString = StringaConnessione("Autorizzazioni.mdb")
ConnCoint.Open()
Try
Dim strSQLInt As String = "INSERT INTO Intestazioni VALUES (" & IdUtenteAggiunto & ", '" & NomeIntestazione & "', " _
& LogCointest & ", " & PwdCointest & ", " & AbilCointest & ")"
Dim CommandInt = New OleDbCommand(strSQLInt, ConnCoint)
CommandInt.ExecuteNonQuery()
Catch e As OleDb.OleDbException
'
End Try
ConnCoint.Close()
Senza il costrutto Try...Catch...End Try inserisce nella tabella due righe identiche, l'unica soluzione che ho trovato è stata di indicizzare uno dei campi con duplicati non ammessi, e quindi inserire il costrutto Try che con catch mi intercetta l'errore e passa alla chiusura della connessione.
Non è però una soluzione che mi piace: vorrei capire perchè c'è l'inserimento duplicato.
50 messaggi dal 13 aprile 2004
Non ho grande esperienza con Access come database, ma le istruzioni mi sembrano corrette (d'altra parte il problema è un doppio inserimento). Quindi, a naso, controllerei che il codice non venga richiamato più di una volta. Che tipo di applicazione si tratta?
22 messaggi dal 18 ottobre 2008
Si tratta di una pagina web in asp.net 2.
Anch'io all'inizio avevo pensato che il codice venisse richiamato più di una volta, perchè l'ho inserito con una serie di modifiche in una pagina preesistente, ma ho controllato bene e non è così.
2.859 messaggi dal 28 gennaio 2003
Quello che dici non è possibile, a meno di non aver fatto un errore grossolano (richiamo della procedura due volte)

per esempio, se scrivo

<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

e nel codice

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Response.Write("Button1_Click" & "<br/>")
End Sub


la procedura viene eseguita due volte, perchè richiamata due volte (in modo errato)

Pietro
22 messaggi dal 18 ottobre 2008
Definizione del pulsante nella pagina asp:
<asp:Button ID="ButCreaAccount" OnClick="ButCreaAccount_OnClick" runat="server" Text="Registra l' Account" />
Procedura nella pagina vb:
Public Sub ButCreaAccount_OnClick(ByVal sender As Object, ByVal args As System.EventArgs) Handles ButCreaAccount.Click
'routines previste dal provider
Dim newUser As MembershipUser = Membership.CreateUser etc
'tutto funziona bene e l'account viene creato regolarmente
'routine per la registrazione di dati in tabelle create da me nello stesso db (quella che ho postato all'inizio)
End Sub
quindi non mi sembra che vi siano duplicazioni di output.

Il bello è che nella stessa pagina ho appena finito un'altra procedura per la registrazione di ulteriori dati in un'altra tabella, ed anche questa mi provoca una duplicazione di record:

<asp:Button ID="ButRegistraSingolo" Text="Registra" runat="server" OnClick="ButRegistraSingolo_OnClick" CausesValidation="False" />

Protected Sub ButRegistraSingolo_OnClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButRegistraSingolo.Click
Dim SIDAccount As Int32 = CInt(Me.TextAccountID.Text)
Dim STitolo As String = Me.DropDownTitoli.SelectedItem.Value
Dim SCognome As String = Me.TextCognome.Text
etc tutti i dim
If Not UserNameImmesso = Nothing Then
SAlias = UserNameImmesso
Else
SAlias = ""
End If
Dim ConnSingolo As New System.Data.OleDb.OleDbConnection()
ConnSingolo.ConnectionString = StringaConnessione("Autorizzazioni.mdb")
ConnSingolo.Open()
Dim strSQLSingolo As String = "INSERT INTO DatiPersonaliConDanea (CollegaIDIntestazione, Titolo, Cognome, Nome, Qualifica, DomusLogin, DomusPwd, DomusAttivata, cellulare1, cellulare2, email1, email2, email3, sitoweb1, sitoweb2, nazione, indirizzoab, capab, cittaab, provinciaab, telab, faxab, indirizzouff, capuff, cittauff, provinciauff, tel1uff, tel2uff, faxuff, Alias) VALUES (" & SIDAccount & ", '" & STitolo & "', '" & SCognome & "', '" & SNome & "', '" & SQualifica & "', " & SLogin & ", " & SPwd & ", " & SAttivato & ", '" & SCell1 & "', '" & SCell2 & "', '" & SMail1 & "', '" & SMail2 & "', '" & SMail3 & "', '" & SWeb1 & "', '" & SWeb2 & "', '" & SNazione & "', '" & SAbIndirizzo & "', '" & SAbCap & "', '" & SAbCitta & "', '" & SAbProv & "', '" & SAbTel & "', '" & SAbFax & "', '" & SUffIndirizzo & "', '" & SUffCap & "', '" & SUffCitta & "', '" & SUffProv & "', '" & SUffTel1 & "', '" & SUffTel2 & "', '" & SUffFax & "', '" & SAlias & "')"
Dim CommandSingolo = New OleDbCommand(strSQLSingolo, ConnSingolo)
CommandSingolo.ExecuteNonQuery()
ConnSingolo.Close()
vari messaggi
End Sub

Il richiamo duplicato potrebbe essere causato da alcuni campi che prevedono il postback o dalla dichiarazione iniziale MaintainScrollPositionOnPostback="True"?
Non ho una risposta ma:
1) usa il debug per capire quando e se viene scatenato l'evento che fa la insert nel db
2) (non inerente al tuo problema ma *molto importante*) usa i parameters anziché accodare i valori ricevuti via request in quel modo: è pericolosissimo!

Matteo Casati
GURU4.net
2.859 messaggi dal 28 gennaio 2003
Ma scusa, hai letto quello che ti ho scritto?

Ci sono sì duplicazioni:

<asp:Button ID="ButCreaAccount" OnClick="ButCreaAccount_OnClick" runat="server" Text="Registra l' Account" />
DEVI TOGLIERE ONCLICK

questo va bene
Public Sub ButCreaAccount_OnClick(ByVal sender As Object, ByVal args As System.EventArgs) Handles ButCreaAccount.Click


OnClick="ButCreaAccount_OnClick" -> lo scatena una volta
Handles ButCreaAccount.Click -> lo scatena una seconda volta

Pietro
22 messaggi dal 18 ottobre 2008
A Pietro09
Scusa, sono stato fuori ed ho letto solo oggi il tuo post.
Come è evidente, non sono un professionista, e credevo che OnClick nella pagina ed Handles nel codice fossero correlati ed occorressero entrambi.
Approfitto della tua disponibilità per chiederti di spiegarmi meglio la correlazione che esiste tra le due sintassi, e quando conviene usare l'una o l'altra.
Grazie.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC