Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Взаимодействие Форма-БД


Автор: Adanedel 22.9.2008, 08:35
Добрый день, периодически приходится писать офисные приложения, например:
 добавление документа в базу на определенного пользователя который в этой базе записан под определенным идентификатором.

Задача следующая: считать из БД информацию о пользователях, выбрать в форме необходимогол и записать в другую таблицу БД информацию о добавленном документе.

Делаю следующим образом:
считываю с БД информацию о пользователях, допустим ID  и FIO в два комбобокса, ставлю на событие изменения FIO изменение ID т.е. SelectedIndex у ID  становится таким же как у FIO, после этого считываю текст из комбобокса ID для выяснения какому пользователю добавить документ и далее записываю в бд, пример кода VB2005: 

Код


    Private Sub addsert_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        query = "select * from fio order by fam"
        sql_zapros(query, True)
        While myDataReader.Read
            NameBox.Items.Add(myDataReader("fam"))
            IDCombo.Items.Add(myDataReader("ID"))
            CategoryCombo.Items.Add(myDataReader("fid"))
        End While
        myConn.Close()
    End Sub

    Private Sub NameBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NameBox.SelectedIndexChanged
        IDCombo.SelectedIndex = NameBox.SelectedIndex
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim newID As Integer
        If (IsDate(DM1Masked.Text) And IsDate(DM2Masked.Text)) Then
            If Not (NUmberBox.Text = "" Or IDCombo.Text = "" Or CategoryCombo.Text = "" Or KursIDCombo.Text = "") Then

                query = "select max(id) as maxid from sertificates"
                sql_zapros(query, True)
                While myDataReader.Read
                    newID = myDataReader("maxid")
                End While
                myConn.Close()

                newID = newID + 1
                query = "insert into sertificates values(" & newID & ",'" & NUmberBox.Text & "'," & IDCombo.Text & "," & CategoryCombo.Text & "," & KursIDCombo.Text & ",'" & DM1Masked.Text & "','" & DM2Masked.Text & "');"
                sql_zapros(query, False)
                myConn.Close()
                StatusLabel.Text = "Запись успешно добавлена!"
            Else
                MessageBox.Show("Не заполнено одно из полей!")
            End If
        Else
            MessageBox.Show("Неверно введена дата!")
        End If
    End Sub


sql_zapros функция запросов к БД аксес.

А теперь собственно проблема:
все работает прекрасно, но периодически возникают ситуации когда происходит допустим добавление документа не тому человеку или документ не добавляется вообще. в чем может быть проблема? 
или подскажите какие возможны более надежные способы работу с БД через Форму.

Автор: Adanedel 22.9.2008, 09:07
случайно н в тот раздел кинул) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)