Upload and Delete Sql

Stato
Discussione chiusa ad ulteriori risposte.

DjDarkPrince87

Utente Silver
5 Dicembre 2007
85
2
0
68
Un saluto a tutti i miei friends!! sono di nuovo qui per chiedervi aiuto in quanto non riesco ha risolvere il problema in un programmino che sto creado per prova.. ovvero un'esercizio che ci ha dato il prof sul database.. ma sinceramente non ce la faccio più poichè non riesco ha capire dove sia l'errore e come si faccia l'eliminazione e la modifica dei dati sul database access.. non sono riuscito ha trovare guide.. vi chiedo gentilmente se qualcuno di voi mi possa chiarire le idee su come fare e con degli esempi.. grazie in anticipo ;)
Codice:
Public Class frmProgettoClienti
    Public Connessione As String
    Dim db As New OleDb.OleDbConnection(Connessione)
    Dim cmd As New OleDb.OleDbCommand(Sql, db)
    Dim tb As OleDb.OleDbDataReader
    Dim Sql As String
    Dim Verifica As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Connessione = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Documents and Settings\DjDarkPrince87\Documenti\ClientiProva1.mdb;User ID=;Password=;"
        db.ConnectionString = Connessione
    End Sub

    Private Sub btnNuovo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuovo.Click
        Me.txtCodiceCliente.Text = ""
        Me.txtCognome.Text = ""
        Me.txtNome.Text = ""
        Me.txtTelefono.Text = ""
    End Sub

    Private Sub btnSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalva.Click
        db.Open()
        If Me.txtCodiceCliente.Text = "" Or Me.txtCognome.Text = "" Or Me.txtNome.Text = "" Or Me.txtTelefono.Text = "" Then
            MsgBox("ATTENZIONE!! I Campi con il rispettivo simbolo (*) sono obbligatori")
            Me.txtCodiceCliente.Focus()
            Me.txtCognome.Focus()
            Me.txtNome.Focus()
            Me.txtTelefono.Focus()
            Exit Sub
        End If
        If Not IsNumeric(txtTelefono.Text) Then
            txtTelefono.Text = ""
            Exit Sub
        End If
        Sql = "INSERT INTO tblClienti (CodiceClienti,Nome,Cognome,Telefono) VALUES ('"
        Sql = Sql & Me.txtCodiceCliente.Text & "'" & ","
        Sql = Sql & "'" & Me.txtNome.Text & "'" & ","
        Sql = Sql & "'" & Me.txtCognome.Text & "'" & ","
        Sql = Sql & "'" & Me.txtTelefono.Text & "'" & ")"
        cmd.CommandText = Sql
        Try
            Verifica = cmd.ExecuteNonQuery()
            If Verifica = 1 Then
                MsgBox("Inserimento Effettuato con Successo!!")
            Else
                MsgBox("Inserimento non Avvenuto")
            End If
        Catch
        End Try
        db.Close()
    End Sub

    Private Sub btnModifica_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModifica.Click
        db.Open()
        Sql = "UPDATE tblClienti SET CodiceClienti='" & Me.txtCodiceCliente.Text & "',"
        Sql = Sql & " Nome='" & Me.txtNome.Text & "',"
        Sql = Sql & " Cognome='" & Me.txtCognome.Text & "',"
        Sql = Sql & " Telefono='" & Me.txtTelefono.Text
        Sql = Sql & " WHERE CodiceClienti = " & Me.txtCodiceCliente.Text
        cmd.CommandText = sql
        cmd.ExecuteNonQuery()
        db.Close()
    End Sub

    Private Sub btnCancella_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancella.Click
        db.Open()
        Sql = "DELETE FROM tblClienti "
        Sql = Sql & " WHERE CodiceClienti = " & Me.txtCodiceCliente.Text
        Sql = Sql & " WHERE Nome = " & Me.txtNome.Text
        Sql = Sql & " WHERE Cognome = " & Me.txtCognome.Text
        Sql = Sql & " WHERE Telefono = " & Me.txtTelefono.Text
        Sql = Sql & " WHERE CodiceClienti = " & Me.txtCodiceCliente.Text
        cmd.CommandText = Sql
        cmd.ExecuteNonQuery()
        db.Close()
    End Sub

    Private Sub btnEsci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEsci.Click
        Close()
    End Sub
End Class

Dove sbaglio???:confused:

edit: posto in allegato il sorgente con il database..
 
RE: Problema:Upload and Delete Sql

C'è un errore di sintassi nelle query
qui:
Codice:
db.Open()
        Sql = "UPDATE tblClienti SET CodiceClienti='" & Me.txtCodiceCliente.Text & "',"
        Sql = Sql & " Nome='" & Me.txtNome.Text & "',"
        Sql = Sql & " Cognome='" & Me.txtCognome.Text & "',"
        Sql = Sql & " Telefono='" & Me.txtTelefono.Text
        Sql = Sql & " WHERE CodiceClienti = " & Me.txtCodiceCliente.Text
        cmd.CommandText = sql
        cmd.ExecuteNonQuery()
        db.Close()
E' errato per due ragioni, primo c'è un errore sintattico e vabè, secondo non puoi aggiornare codicecliente e poi usarlo come condizione nella where. Ovvero, se io ho un solo record con codice uguale a 1, lo cambio a 2, nella tabella non ci sarà il record con codice uguale a 2, e quindi verrà sollevata un'eccezione. Quindi, o salvi il codice prima che venga modificato, oppure non permetti la modifica del codice cliente. Per l'esempio io ho usato la seconda alternativa.
Quindi correggerei il codice così
Codice:
Try
            db.Open()
            Sql = "UPDATE tblClienti SET "
            Sql = Sql & " Nome='" & Me.txtNome.Text & "',"
            Sql = Sql & " Cognome='" & Me.txtCognome.Text & "',"
            Sql = Sql & " Telefono='" & CInt(Me.txtTelefono.Text) & "'"
            Sql = Sql & " WHERE CodiceClienti = '" & CInt(Me.txtCodiceCliente.Text) & "'"
            cmd.CommandText = Sql
            cmd.ExecuteNonQuery()
            db.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
(questo è per la modifica)
Per la cancellazione uguale, c'è un errore grossolano nella sintassi della query
Codice:
Sql = "DELETE FROM tblClienti "
        Sql = Sql & " WHERE CodiceClienti = " & Me.txtCodiceCliente.Text
        Sql = Sql & " WHERE Nome = " & Me.txtNome.Text
        Sql = Sql & " WHERE Cognome = " & Me.txtCognome.Text
        Sql = Sql & " WHERE Telefono = " & Me.txtTelefono.Text
        Sql = Sql & " WHERE CodiceClienti = " & Me.txtCodiceCliente.Text
qui è tutto errato... io fare così
Codice:
Try
            db.Open()
            Sql = "DELETE FROM tblClienti "
            Sql = Sql & " WHERE CodiceClienti = '" & CInt(Me.txtCodiceCliente.Text) & "'"
            cmd.CommandText = Sql
            cmd.ExecuteNonQuery()
            db.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
in questo modo considero codicecliente una chiave primaria (come dovrebbe essere) quindi unica, di conseguenza identifica un'unico record nel db, che posso cancellare tranquillamente.

#edit. ah.. un'altra cosa.. non userei un path assoluto per il db
Codice:
Connessione = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Documents and Settings\DjDarkPrince87\Documenti\ClientiProva1.mdb;User ID=;Password=;"
più che altro sarebbe preferibile mettere il db nella stessa cartella dell'exe (o in una subdir) e quindi fare una cosa del genere
Codice:
Connessione = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath() + "\ClientiProva1.mdb" & ";User ID=;Password=;"
 
RE: Problema:Upload and Delete Sql

Grazie stoner per le tue delucidazioni esaurienti..:D sei stato veramente gentile e disponibile..adesso ho le idee veramente chiare..grazie davvero..;)
 
Stato
Discussione chiusa ad ulteriori risposte.