AndreB82
29-03-2019, 16:11
Ciao a tutti,
sto realizzando un programmino in cui vorrei alimentare due tabelle. Nella prima ad ogni inserimento di un record in una Form si viene a creare un record. Nella seconda invece è necessario controllare l'esistenza di un preciso codice e poi o aggiornare il corrispondente record o altrimenti inserirne uno nuovo.
Ho iniziato a lavorare al codice, non ricevo alcun errore di debug, ma al momento di eseguire il record non viene mai aggiunto nella tabella, ma il codice salta direttamente al "Catch ex As Exception".
Vi riporto il codice di seguito. Qualcuno può aiutarmi?
Grazie,
Andrea
Imports System.Data.OleDb
Public Class Form4
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim connString As String
Dim ricerca As String
Dim drGiocatore As OleDbDataReader
Dim myConnection As OleDbConnection = New OleDbConnection
'Connessione e trasmissione dati a DB
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " & Application.StartupPath & "\DBGiocatori.accdb"
myConnection.ConnectionString = connString
myConnection.Open()
Dim str As String
str = "INSERT INTO [Tbl_Partite]([Nome_Giocatore],[Cognome_Giocatore],[Anno_di_nascita],[Luogo_di_nascita],[Codice_giocatore],[Statura],[Coordinazione],[Voto_Coordinazione],[Velocità],[Voto_Velocità], [Resistenza],[Voto_Resistenza], [Forza],[Voto_Forza]VALUES(@NGio,@CGio,@AnnoNasc,@LuogoNasc,@CodGio, @Stat,@Coord,@VCoord,@Vel,@VVel,@Res,@VRes,@For,@VFor)"
ricerca = "SELECT [Codice_giocatore] FROM [Tbl_Giocatore] WHERE [Codice_giocatore] = @CodGio"
Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
Dim objcomm As OleDbCommand = New OleDbCommand(ricerca, myConnection)
cmd.Parameters.Add(New OleDbParameter("@NGio", CType(TextBox4.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@CGio", CType(TextBox5.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@AnnoNasc", CType(TextBox6.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@LuogoNasc", CType(TextBox7.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@CodGio", CType(TextBox57.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@Stat", CType(TextBox16.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@Coord", CType(TextBox17.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@VCoord", CType(TextBox53.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@Vel", CType(TextBox19.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@VVel", CType(TextBox55.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@Res", CType(TextBox18.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@VRes", CType(TextBox54.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@For", CType(TextBox20.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@VFor", CType(TextBox56.Text, String)))
Try
cmd.ExecuteNonQuery()
MsgBox(TextBox5.Text & " - correttamente salvato")
drGiocatore = objcomm.ExecuteReader()
drGiocatore.Read()
If drGiocatore.HasRows = True Then
MsgBox("Trovato")
ElseIf drGiocatore.HasRows = False Then
MsgBox("Non trovato")
End If
myConnection.Close()
TextBox16.Text = ""
TextBox17.Text = ""
TextBox18.Text = ""
TextBox19.Text = ""
TextBox20.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox53.Text = ""
TextBox54.Text = ""
TextBox55.Text = ""
TextBox56.Text = ""
TextBox57.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
Catch ex As Exception
Dim nuovoCod As String
nuovoCod = "INSERT INTO [Tbl_Partite]([Codice_Giocatore],[Nome_Giocatore],[Cognome_Giocatore]) VALUES (@CodGio,@NGio,@CGio)"
MsgBox("Nuovo record inserito nella tabella Giocatori")
End Try
Form3.Show()
Dim visible3 As Object = Form3.Visible
If visible3 Then
Me.Hide()
End If
End Sub
End Class
sto realizzando un programmino in cui vorrei alimentare due tabelle. Nella prima ad ogni inserimento di un record in una Form si viene a creare un record. Nella seconda invece è necessario controllare l'esistenza di un preciso codice e poi o aggiornare il corrispondente record o altrimenti inserirne uno nuovo.
Ho iniziato a lavorare al codice, non ricevo alcun errore di debug, ma al momento di eseguire il record non viene mai aggiunto nella tabella, ma il codice salta direttamente al "Catch ex As Exception".
Vi riporto il codice di seguito. Qualcuno può aiutarmi?
Grazie,
Andrea
Imports System.Data.OleDb
Public Class Form4
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim connString As String
Dim ricerca As String
Dim drGiocatore As OleDbDataReader
Dim myConnection As OleDbConnection = New OleDbConnection
'Connessione e trasmissione dati a DB
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " & Application.StartupPath & "\DBGiocatori.accdb"
myConnection.ConnectionString = connString
myConnection.Open()
Dim str As String
str = "INSERT INTO [Tbl_Partite]([Nome_Giocatore],[Cognome_Giocatore],[Anno_di_nascita],[Luogo_di_nascita],[Codice_giocatore],[Statura],[Coordinazione],[Voto_Coordinazione],[Velocità],[Voto_Velocità], [Resistenza],[Voto_Resistenza], [Forza],[Voto_Forza]VALUES(@NGio,@CGio,@AnnoNasc,@LuogoNasc,@CodGio, @Stat,@Coord,@VCoord,@Vel,@VVel,@Res,@VRes,@For,@VFor)"
ricerca = "SELECT [Codice_giocatore] FROM [Tbl_Giocatore] WHERE [Codice_giocatore] = @CodGio"
Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
Dim objcomm As OleDbCommand = New OleDbCommand(ricerca, myConnection)
cmd.Parameters.Add(New OleDbParameter("@NGio", CType(TextBox4.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@CGio", CType(TextBox5.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@AnnoNasc", CType(TextBox6.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@LuogoNasc", CType(TextBox7.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@CodGio", CType(TextBox57.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@Stat", CType(TextBox16.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@Coord", CType(TextBox17.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@VCoord", CType(TextBox53.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@Vel", CType(TextBox19.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@VVel", CType(TextBox55.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@Res", CType(TextBox18.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@VRes", CType(TextBox54.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@For", CType(TextBox20.Text, String)))
cmd.Parameters.Add(New OleDbParameter("@VFor", CType(TextBox56.Text, String)))
Try
cmd.ExecuteNonQuery()
MsgBox(TextBox5.Text & " - correttamente salvato")
drGiocatore = objcomm.ExecuteReader()
drGiocatore.Read()
If drGiocatore.HasRows = True Then
MsgBox("Trovato")
ElseIf drGiocatore.HasRows = False Then
MsgBox("Non trovato")
End If
myConnection.Close()
TextBox16.Text = ""
TextBox17.Text = ""
TextBox18.Text = ""
TextBox19.Text = ""
TextBox20.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox53.Text = ""
TextBox54.Text = ""
TextBox55.Text = ""
TextBox56.Text = ""
TextBox57.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
Catch ex As Exception
Dim nuovoCod As String
nuovoCod = "INSERT INTO [Tbl_Partite]([Codice_Giocatore],[Nome_Giocatore],[Cognome_Giocatore]) VALUES (@CodGio,@NGio,@CGio)"
MsgBox("Nuovo record inserito nella tabella Giocatori")
End Try
Form3.Show()
Dim visible3 As Object = Form3.Visible
If visible3 Then
Me.Hide()
End If
End Sub
End Class