Boun giorno , ho costruito un DataBase Access tramite codice vb2010, formato da 4 tabelle 1^-tblClienti - ID_Clienti Key, 2^tblLocalita - Localita Key, 3^tblPrestazioni - ID_Prestazioni key , 4^tblFattura - ID_Fattura key, relazionate uno-molti tra loro. Ho creato il primo form di inserimento,modifica e cacellazione righe database.Non ho problemi con il seguente codice di inserimento dati in tblLocalita:
On Error GoTo Handle
Archivipen() 'Apri connessine
'Inserisci dati tacellaCliente e stabiliamo una connessione con il DataBase.mdb
Dim cmInseriscitblClienti As New OleDb.OleDbCommand("INSERT INTO [tblLocalita]([Localita],[CAP]) VALUES(?,?)", Archivio)
'Stabiliamo i parapetri Clienti
cmInseriscitblClienti.Parameters.Add(New OleDb.OleDbParameter("@Localita", OleDb.OleDbType.LongVarWChar))
cmInseriscitblClienti.Parameters.Add(New OleDb.OleDbParameter("@CAP", OleDb.OleDbType.LongVarWChar))
'Stabiliamo i VALORI dei parametri Clienti
cmInseriscitblClienti.Parameters(0).Value = txtLocalita.Text
cmInseriscitblClienti.Parameters(1).Value = txtCAP.Text
'Esegui la query database.mdb
cmInseriscitblClienti.ExecuteNonQuery()
Handle:
I problemi sorgono con il CODICE MODIFICA come di seguito riportato:
On Error GoTo Handle
Dim cmModifica As New OleDbCommand("UPDATE tblLocalita SET Localita=@Localita,CAP=@CAP WHERE (ID_Localita=@ID_Localita)", Archivio)
'Stabiliamo i parapetri Clienti
cmModifica.Parameters.Add(New OleDb.OleDbParameter("@Localita", OleDb.OleDbType.LongVarWChar))
cmModifica.Parameters.Add(New OleDb.OleDbParameter("@CAP", OleDb.OleDbType.LongVarWChar))
' Stabiliamo i VALORI dei parametri Clienti
cmModifica.Parameters(0).Value = txtLocalita.Text
cmModifica.Parameters(1).Value = txtCAP.Text
cmModifica.ExecuteNonQuery()
cmModifica.ExecuteNonQuery()
DANDOMI IL SEGUENTE ERRORE:
(Nessun valore specificato per alcuni parametri necessari.)
Se invece modifico il codice in questo modo,
On Error GoTo Handle
Dim cmModifica As New OleDbCommand("UPDATE tblLocalita SET Localita=@Localita,CAP=@CAP WHERE (Localita=@Localita)", Archivio)
'Stabiliamo i parapetri Clienti
cmModifica.Parameters.Add(New OleDb.OleDbParameter("@Localita", OleDb.OleDbType.LongVarWChar))
cmModifica.Parameters.Add(New OleDb.OleDbParameter("@CAP", OleDb.OleDbType.LongVarWChar))
' Stabiliamo i VALORI dei parametri Clienti
cmModifica.Parameters(0).Value = txtLocalita.Text
cmModifica.Parameters(1).Value = txtCAP.Text
cmModifica.ExecuteNonQuery()
cmModifica.ExecuteNonQuery()
Handle:
mi permette di modificare dolo il campo CAP
===================================================================================
Ho provato anche così cambiando completamente metodo e codice e anche quì mi da questo errore; Evidenziando in giallo la query -da.Fill(ds, "tblLocalita")- Tipi di dati non corrispondenti nell'espressione criteri. Il codice è il seguente
Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click
'On Error GoTo Handle
ds = New DataSet
da = New OleDbDataAdapter("UPDATE tblLocalita SET Localita='" & txtLocalita.Text & "',CAP='" & txtCAP.Text & "'WHERE ID_Localita='" & txtID.Text & "'", Archivio)
da.Fill(ds, "tblLocalita")
Call ShowData()
'Handle:
End Sub
Anche qui dove sbaglio? !!!!!!!! Ho il sospetto a questo punto che l'errore sia nel BataBase? mah! Se è così fosse ti prego si visionare la costruzione dell' ArchivioPrestazioni.mdb:
Private Sub cmdCreaTabelle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCreaTabelle.Click, lblCreaTabelle.Click
'costruzione Tabelle
Dim Costruisci_tblClienti As New OleDb.OleDbCommand("CREATE TABLE [tblClienti] ([ID_InfoClienti] AutoIncrement NOT NULL,[Cognome] TEXT(25) NULL, [Nome] TEXT(25) NULL, [Data_di_Nascita] TEXT(10) NULL, [Via] TEXT(30) NULL, [ID_Localita] INT NULL, [N_Telefono_Fisso] TEXT(10) NULL, [Telefono_Mobile] TEXT(10) NULL,[Partita_IVA] TEXT(10) NULL, [Codice_Fiscale] TEXT(16) NULL, [Patologia] TEXT(225) NULL,PRIMARY KEY (ID_InfoClienti))", Archivio) 'Crea una nuova variabile com per inviare un comando SQL al database archivio per creare una tabella Docenti con i campi Nome, Cognome e Luogo di nascita al suo interno. archivio indica che va inviato alla connessione aperta in archivio
Dim Costruisci_tblLocalita As New OleDb.OleDbCommand("CREATE TABLE [tblLocalita] ([ID_Localita] AutoIncrement NOT NULL,[Localita] TEXT(30) NULL,[CAP] TEXT(5) NULL, PRIMARY KEY(ID_Localita))", Archivio) 'Crea una nuova variabile com per inviare un comando SQL al database archivio per creare una tabella Docenti con i campi Nome, Cognome e Luogo di nascita al suo interno. archivio indica che va inviato alla connessione aperta in archivio
Dim Costruisci_tblPrestazioni As New OleDb.OleDbCommand("CREATE TABLE [tblPrestazioni] ([ID_Prestazioni] AutoIncrement NOT NULL, [ID_InfoClienti] INT NULL, [Prestazioni] TEXT(255) NULL,[Costo] TEXT(10) NULL,[Data_Inizio_Prestazione] TEXT(10) NULL, [Ora] TEXT(5) NULL,[Data_Fine_Prestazione] TEXT(10) NULL, PRIMARY KEY (ID_Prestazioni))", Archivio)
Dim Costruisci_tblFattura As New OleDb.OleDbCommand("CREATE TABLE [tblFattura] ([ID_Fattura] AutoIncrement NOT NULL, [ID_Prestazioni] INT NULL, [N_Fattura] TEXT(10) NULL, [Data_Fattura] DATE NULL, [Bollo] TEXT(5) NULL, [Totale_Lordo] TEXT(10) NULL,[Totale_Netto] TEXT(10) NULL, PRIMARY KEY (ID_Fattura))", Archivio)
Archivipen() 'Apri la connessione con il databa
Costruisci_tblClienti.ExecuteNonQuery() 'Esegui comando SQL
Costruisci_tblLocalita.ExecuteNonQuery() 'Esegui comando SQL
Costruisci_tblPrestazioni.ExecuteNonQuery() 'Esegui comando SQL
Costruisci_tblFattura.ExecuteNonQuery() 'Esegui comando SQL
Archivio.Close() 'Chiudi la connessione con il database
End Sub
Grazie per la disponibilità, non posso dirti "un caffè pagato" perchè sicuramente non abiti nella mia stessa città, comunque grazie di cuore.
On Error GoTo Handle
Archivipen() 'Apri connessine
'Inserisci dati tacellaCliente e stabiliamo una connessione con il DataBase.mdb
Dim cmInseriscitblClienti As New OleDb.OleDbCommand("INSERT INTO [tblLocalita]([Localita],[CAP]) VALUES(?,?)", Archivio)
'Stabiliamo i parapetri Clienti
cmInseriscitblClienti.Parameters.Add(New OleDb.OleDbParameter("@Localita", OleDb.OleDbType.LongVarWChar))
cmInseriscitblClienti.Parameters.Add(New OleDb.OleDbParameter("@CAP", OleDb.OleDbType.LongVarWChar))
'Stabiliamo i VALORI dei parametri Clienti
cmInseriscitblClienti.Parameters(0).Value = txtLocalita.Text
cmInseriscitblClienti.Parameters(1).Value = txtCAP.Text
'Esegui la query database.mdb
cmInseriscitblClienti.ExecuteNonQuery()
Handle:
I problemi sorgono con il CODICE MODIFICA come di seguito riportato:
On Error GoTo Handle
Dim cmModifica As New OleDbCommand("UPDATE tblLocalita SET Localita=@Localita,CAP=@CAP WHERE (ID_Localita=@ID_Localita)", Archivio)
'Stabiliamo i parapetri Clienti
cmModifica.Parameters.Add(New OleDb.OleDbParameter("@Localita", OleDb.OleDbType.LongVarWChar))
cmModifica.Parameters.Add(New OleDb.OleDbParameter("@CAP", OleDb.OleDbType.LongVarWChar))
' Stabiliamo i VALORI dei parametri Clienti
cmModifica.Parameters(0).Value = txtLocalita.Text
cmModifica.Parameters(1).Value = txtCAP.Text
cmModifica.ExecuteNonQuery()
cmModifica.ExecuteNonQuery()
DANDOMI IL SEGUENTE ERRORE:
(Nessun valore specificato per alcuni parametri necessari.)
Se invece modifico il codice in questo modo,
On Error GoTo Handle
Dim cmModifica As New OleDbCommand("UPDATE tblLocalita SET Localita=@Localita,CAP=@CAP WHERE (Localita=@Localita)", Archivio)
'Stabiliamo i parapetri Clienti
cmModifica.Parameters.Add(New OleDb.OleDbParameter("@Localita", OleDb.OleDbType.LongVarWChar))
cmModifica.Parameters.Add(New OleDb.OleDbParameter("@CAP", OleDb.OleDbType.LongVarWChar))
' Stabiliamo i VALORI dei parametri Clienti
cmModifica.Parameters(0).Value = txtLocalita.Text
cmModifica.Parameters(1).Value = txtCAP.Text
cmModifica.ExecuteNonQuery()
cmModifica.ExecuteNonQuery()
Handle:
mi permette di modificare dolo il campo CAP
===================================================================================
Ho provato anche così cambiando completamente metodo e codice e anche quì mi da questo errore; Evidenziando in giallo la query -da.Fill(ds, "tblLocalita")- Tipi di dati non corrispondenti nell'espressione criteri. Il codice è il seguente
Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click
'On Error GoTo Handle
ds = New DataSet
da = New OleDbDataAdapter("UPDATE tblLocalita SET Localita='" & txtLocalita.Text & "',CAP='" & txtCAP.Text & "'WHERE ID_Localita='" & txtID.Text & "'", Archivio)
da.Fill(ds, "tblLocalita")
Call ShowData()
'Handle:
End Sub
Anche qui dove sbaglio? !!!!!!!! Ho il sospetto a questo punto che l'errore sia nel BataBase? mah! Se è così fosse ti prego si visionare la costruzione dell' ArchivioPrestazioni.mdb:
Private Sub cmdCreaTabelle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCreaTabelle.Click, lblCreaTabelle.Click
'costruzione Tabelle
Dim Costruisci_tblClienti As New OleDb.OleDbCommand("CREATE TABLE [tblClienti] ([ID_InfoClienti] AutoIncrement NOT NULL,[Cognome] TEXT(25) NULL, [Nome] TEXT(25) NULL, [Data_di_Nascita] TEXT(10) NULL, [Via] TEXT(30) NULL, [ID_Localita] INT NULL, [N_Telefono_Fisso] TEXT(10) NULL, [Telefono_Mobile] TEXT(10) NULL,[Partita_IVA] TEXT(10) NULL, [Codice_Fiscale] TEXT(16) NULL, [Patologia] TEXT(225) NULL,PRIMARY KEY (ID_InfoClienti))", Archivio) 'Crea una nuova variabile com per inviare un comando SQL al database archivio per creare una tabella Docenti con i campi Nome, Cognome e Luogo di nascita al suo interno. archivio indica che va inviato alla connessione aperta in archivio
Dim Costruisci_tblLocalita As New OleDb.OleDbCommand("CREATE TABLE [tblLocalita] ([ID_Localita] AutoIncrement NOT NULL,[Localita] TEXT(30) NULL,[CAP] TEXT(5) NULL, PRIMARY KEY(ID_Localita))", Archivio) 'Crea una nuova variabile com per inviare un comando SQL al database archivio per creare una tabella Docenti con i campi Nome, Cognome e Luogo di nascita al suo interno. archivio indica che va inviato alla connessione aperta in archivio
Dim Costruisci_tblPrestazioni As New OleDb.OleDbCommand("CREATE TABLE [tblPrestazioni] ([ID_Prestazioni] AutoIncrement NOT NULL, [ID_InfoClienti] INT NULL, [Prestazioni] TEXT(255) NULL,[Costo] TEXT(10) NULL,[Data_Inizio_Prestazione] TEXT(10) NULL, [Ora] TEXT(5) NULL,[Data_Fine_Prestazione] TEXT(10) NULL, PRIMARY KEY (ID_Prestazioni))", Archivio)
Dim Costruisci_tblFattura As New OleDb.OleDbCommand("CREATE TABLE [tblFattura] ([ID_Fattura] AutoIncrement NOT NULL, [ID_Prestazioni] INT NULL, [N_Fattura] TEXT(10) NULL, [Data_Fattura] DATE NULL, [Bollo] TEXT(5) NULL, [Totale_Lordo] TEXT(10) NULL,[Totale_Netto] TEXT(10) NULL, PRIMARY KEY (ID_Fattura))", Archivio)
Archivipen() 'Apri la connessione con il databa
Costruisci_tblClienti.ExecuteNonQuery() 'Esegui comando SQL
Costruisci_tblLocalita.ExecuteNonQuery() 'Esegui comando SQL
Costruisci_tblPrestazioni.ExecuteNonQuery() 'Esegui comando SQL
Costruisci_tblFattura.ExecuteNonQuery() 'Esegui comando SQL
Archivio.Close() 'Chiudi la connessione con il database
End Sub
Grazie per la disponibilità, non posso dirti "un caffè pagato" perchè sicuramente non abiti nella mia stessa città, comunque grazie di cuore.