Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa cmd.ExecuteNonQuery() - VB.NET + MS Access

[es] :: .NET :: Problem sa cmd.ExecuteNonQuery() - VB.NET + MS Access

[ Pregleda: 1165 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nebojša992
Nebojša Jovanić

Član broj: 302462
Poruke: 21
*.teol.net.



+11 Profil

icon Problem sa cmd.ExecuteNonQuery() - VB.NET + MS Access21.11.2013. u 12:05 - pre 126 meseci
Moli bi za pomoć uglavnom iz edukativnih razloga, pa ako je neko raspoložen (a pri tom da ima i malo slobodnog vremena) da mi pokuša pomoći bio bi veoma zahvalan jer nisam iskusan u ovome, a baš mi je stalo da ovo rešim! Naprimer ako imam Entry formu - kompletan kod:

Code:
Imports System.Data.OleDb

Public Class Entry
    Dim gender As String
    Dim bytimage() As Byte
    Public cnn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\AddressBook.mdb")
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load



    End Sub


    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
        Me.Close()
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        With OfdImage
            .InitialDirectory = "c:/"
            .Filter = "Only Picture With JPG/JPEG/PNG Extension|*.jpg;*.jpeg;*.png"
            .FileName = Nothing
        End With
        If OfdImage.ShowDialog = Windows.Forms.DialogResult.OK Then
            MyImage.Image = Image.FromFile(OfdImage.FileName)
            MyImage.Tag = OfdImage.FileName
        Else
            MyImage.Tag = ""
        End If
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles BtnSave.Click

        If BtnSave.Text = "Save" Then
            'for insert the data



            If RbMale.Checked Then
                gender = "male"
            ElseIf RbFemale.Checked Then

                gender = "female"
            Else
                MsgBox("select gender")
            End If







            cnn.Open()

            Dim cmd As New OleDb.OleDbCommand
            cmd.Connection = cnn

            'cmd.CommandText = "insert into contacts(FirstName, LastName, TempAddress, PerAddress, OfficeAddress, PostCode, PhoneO, PhoneH, PhoneM, Email, Notes, Facebook, BloodGroup, Dob, Gender, Photo) VALUES('" & TxFirstName.Text & "', '" & TxLastName.Text & "', '" & TxTempAddress.Text & "', '" & TxPerAddress.Text & "', '" & TxOfficeAddress.Text & "', '" & TxPostCode.Text & "', '" & TxPhoneO.Text & "', '" & TxPhoneH.Text & "', '" & TxPhoneM.Text & "', '" & TxEmail.Text & "', '" & TxNote.Text & "', '" & TxFaceBook.Text & "', '" & BloodGroup.Text & "', '" & DOB.Text & "', '" & gender & "')"

            cmd.CommandText = "insert into contacts([FirstName], [LastName], [TempAddress], [PerAddress], [OfficeAddress], [PostCode], [PhoneO], [PhoneH], [PhoneM], [Email], [Notes], [Facebook], [BloodGroup], [Dob], [Gender], [Photo]) VALUES(@FirstName, @LastName, @TempAddress, @PerAddress, @OfficeAddress, @PostCode, @PhoneO, @PhoneH, @PhoneM, @Email, @Notes, @Facebook, @BloodGroup, @Dob, @Gender, @myimage)"


            With cmd.Parameters

                .AddWithValue("@FirstName", TxFirstName.Text)
                .AddWithValue("@LastName", TxLastName.Text)
                .AddWithValue("@TempAddress", TxTempAddress.Text)
                .AddWithValue("@PerAddress", TxPerAddress.Text)
                .AddWithValue("@OfficeAddress", TxOfficeAddress.Text)
                .AddWithValue("@PostCode", TxPostCode.Text)

                .AddWithValue("@PhoneO", TxPhoneO.Text)
                .AddWithValue("@PhoneH", TxPhoneH.Text)
                .AddWithValue("@PhoneM", TxPhoneM.Text)
                .AddWithValue("@Email", TxEmail.Text)
                .AddWithValue("@Notes", TxNote.Text)
                .AddWithValue("@FaceBook", TxFaceBook.Text)
                .AddWithValue("@BloodGroup", BloodGroup.Text)
                .AddWithValue("@Dob", DOB.Text)
                .AddWithValue("@Gender", gender)
                ' .AddWithValue("@Photo", bytimage)




                Try
                    Dim ms As New System.IO.MemoryStream
                    Dim bmpImage As New Bitmap(MyImage.Image)

                    bmpImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
                    bytimage = ms.ToArray()
                    ms.Close()
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try

                .AddWithValue("@myimage", bytimage)





            End With
            cmd.ExecuteNonQuery()
            MsgBox("New Record Added")



        Else
            'for update
            If RbMale.Checked Then
                gender = "male"
            ElseIf RbFemale.Checked Then

                gender = "female"
            Else
                MsgBox("select gender")
            End If


            Dim i As Integer = Display.DataGridView1.CurrentRow.Index
            Dim ID As Integer = Display.DataGridView1.Item(0, i).Value

            If cnn.State = ConnectionState.Closed Then
                cnn.Open()
            End If




            Dim cmd As New OleDb.OleDbCommand
            cmd.Connection = cnn


            cmd.CommandText = "UPDATE contacts SET [FirstName]=@FirstName, [LastName]=@LastName, [TempAddress]=@TempAddress, [PerAddress]=@PerAddress, [OfficeAddress]=@OfficeAddress, [PostCode]=@PostCode, [PhoneO]=@PhoneO, [PhoneH]=@PhoneH, [PhoneM]=@PhoneM, [Email]=@Email, [Notes]=@Notes, [Facebook]=@Facebook, [BloodGroup]=@BloodGroup, [Dob]=@Dob, [Gender]=@Gender, [Photo]=@myimage WHERE ID=" & ID & ""


            With cmd.Parameters

                .AddWithValue("@FirstName", TxFirstName.Text)
                .AddWithValue("@LastName", TxLastName.Text)
                .AddWithValue("@TempAddress", TxTempAddress.Text)
                .AddWithValue("@PerAddress", TxPerAddress.Text)
                .AddWithValue("@OfficeAddress", TxOfficeAddress.Text)
                .AddWithValue("@PostCode", TxPostCode.Text)

                .AddWithValue("@PhoneO", TxPhoneO.Text)
                .AddWithValue("@PhoneH", TxPhoneH.Text)
                .AddWithValue("@PhoneM", TxPhoneM.Text)
                .AddWithValue("@Email", TxEmail.Text)
                .AddWithValue("@Notes", TxNote.Text)
                .AddWithValue("@FaceBook", TxFaceBook.Text)
                .AddWithValue("@BloodGroup", BloodGroup.Text)
                .AddWithValue("@Dob", DOB.Text)
                .AddWithValue("@Gender", gender)
                ' .AddWithValue("@Photo", bytimage)




                Try
                    Dim ms As New System.IO.MemoryStream
                    Dim bmpImage As New Bitmap(MyImage.Image)

                    bmpImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
                    bytimage = ms.ToArray()
                    ms.Close()
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try

                .AddWithValue("@myimage", bytimage)





            End With
            cmd.ExecuteNonQuery()
            MsgBox("Record Updated")

        End If









        Display.datarefresh()


        Me.Close()
    End Sub

    Private Sub RbFemale_CheckedChanged(sender As Object, e As EventArgs) Handles RbFemale.CheckedChanged

       
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Me.Close()

    End Sub
End Class


E sada ako na Entry formi popunim SVAKO TextBox polje kao i jedan GroupBox i idem na Button Save sve je OK, unos bude sačuvan u bazu i sve funkcioniše.
Ali ako propustim popuniti makar jedno polje na formi (bilo koje) javlja se greška sa cmd.ExecuteNonQuery(), kao na slici:



A ja bi hteo kada ispustim popuniti neko polje na formi da dobijem neki MsgBox koji me upozorava da je "potrebno popuniti sva polja", i kada ga potvrdim da ostajem na istoj formi i da imam mogućnost popuniti polja koja sam ispustio (ona uobičajena "procedura").

Probao sam dodati kod ispod ali ne vredi:

Code:
If TxFirstName.Text = "" Or TxLastName.Text = "" Or TxTempAddress.Text = "" Or TxPerAddress.Text = "" Or TxOfficeAddress.Text = "" Or TxPostCode.Text = "" Or TxPhoneO.Text = "" Or TxPhoneH.Text = "" Or TxPhoneM.Text = "" Or TxEmail.Text = "" Or TxNote.Text = "" Or TxFaceBook.Text = "" Or BloodGroup.Text = "" Or DOB.Text = "" Then
                MsgBox("Popuni sva polja....", MsgBoxStyle.Critical, "Upozorenje")
                Return
            End If

ILI

Ako nemože ovo, onda postoji li mogućnost da mogu snimiti unos koji nije potpun, znači da snimim podatke koji su upisani bez obzira što nije svako polje na formi popunjeno.
Nadam se da sam dobro objasnio šta bi hteo. Hvala unapred!
 
Odgovor na temu

nebojša992
Nebojša Jovanić

Član broj: 302462
Poruke: 21
*.teol.net.



+11 Profil

icon Re: Problem sa cmd.ExecuteNonQuery() - VB.NET + MS Access21.11.2013. u 14:48 - pre 126 meseci
O izvinjavam se konačno sam to REŠIO, odnosno rešenje je bilo već tu, naime ovaj drugi kod u mom postu iznad je bio upravo rešenje, samo što ga ja nisam stavljao gde treba, kada sam ga ubacio na Save kao i na Update button-e sve je bilo kako treba.Pozdrav.
 
Odgovor na temu

[es] :: .NET :: Problem sa cmd.ExecuteNonQuery() - VB.NET + MS Access

[ Pregleda: 1165 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.