Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Изменение данных в таблице с помощью UPDATE / 8 сообщений из 8, страница 1 из 1
01.06.2018, 11:35
    #39653835
elenok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных в таблице с помощью UPDATE
Имеется БД Библиотека.Программирую кнопку на добавление новой книги в базу

Не могу написать кусок кода (Пользователь вводит данные о книги и необходимо проверить: если есть книга с такими же параметрами, то в колонке «В наличие» нужно добавить +1, а если нет такой книги, то добавить, как новую в список книг в базу). Чтоб добавить новую книгу я сделала, а кусок кода на добавление такой же книги не работает.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Private Sub CommandButton1_Click()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim com, tip As String
Dim name, author, genre, izd, year, t As String
 If cn Is Nothing Then
        Set cn = New ADODB.Connection
        cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Елена\Desktop\27.05\БД_библиотека1.accdb"
        cn.Open
 End If
 
 If rs Is Nothing Then
        Set rs = New ADODB.Recordset
    End If
        
    If rs.State = 1 Then
        rs.Close
    End If
    
    com = "SELECT * FROM Книги WHERE "
    name = rs.Fields(1).Value
    author = rs.Fields(2).Value
    genre = rs.Fields(3).Value
    izd = rs.Fields(4).Value
    year = rs.Fields(5).Value
    t = rs.Fields(6).Value
If (TextBox1.text = name And TextBox2.text = author And ComboBox1.text = genre And TextBox4.text = izd And TextBox5.text = year And ComboBox2.text = t) Then
        com = "UPDATE Книги SET Вналичие=Вналичие + 1"
Else
    
   com = "INSERT INTO Книги (Название,Автор,Жанр,Издательство,ГодИздания,ТипПИ)VALUES ('" & TextBox1.text & "', '" & TextBox2.text & "', '" & ComboBox1.text & "', '" & TextBox4.text & "', '" & TextBox5.text & "', '" & ComboBox2.text & "');"
    rs.Open com, cn
    TextBox1.text = ""
    TextBox2.text = ""
    ComboBox1.text = ""
    TextBox4.text = ""
    TextBox5.text = ""
    ComboBox2.text = ""
End If

End Sub
...
Рейтинг: 0 / 0
01.06.2018, 12:15
    #39653884
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных в таблице с помощью UPDATE
elenok,
приложите файл базы данных *.mdb (или accdb)
Код: vbnet
1.
2.
3.
4.
5.
if dcount("*","ИмяТаблицы","название='" & me.название & "' and автор='" & me.автор & "'")>0 then '(если поле число апострофы не нужны)
' Ваши действия если книга этого автора с таким названием уже есть в таблице
Else
' действия если нет
end if
...
Рейтинг: 0 / 0
01.06.2018, 12:19
    #39653891
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных в таблице с помощью UPDATE
Вы совершенно неправильно работаете с Recordset. Поищите любой пример работы. Его нужно открыть с SQL "SELECT * FROM Книги", без всяких where, затем использовать метод Find для поиска нужной записи, отредактировать количество, потом Update. Если не нашли, то добавляем строку с помощью AddNew, опять же редактируем все необходимые поля и Update.
Можно обойтись и без рекодсетов, просто формировать правильные SQL команды INSERT и UPDATE и выполнять их.

Не совсем понятно, зачем используете ADO вместо штатного DAO - в ADO все сложнее.
...
Рейтинг: 0 / 0
01.06.2018, 12:24
    #39653898
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных в таблице с помощью UPDATE
sdku
Код: vbnet
1.
if dcount(


Это ж Эксель, DCount тут не будет работать с внешней базой

Да, и не понятно, зачем использовать Эксель, если есть Акцесс. Код будет похож, а если перейти на формы на базе таблицы, то все будет намного проще.
...
Рейтинг: 0 / 0
01.06.2018, 12:42
    #39653913
Прогер_самоучка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных в таблице с помощью UPDATE
elenok http://www.sql.ru/forum/actualfile.aspx?id=21460364] Приложенный файл (БД библиотека1.xlsm - 20Kb) вам не в этт форум
...
Рейтинг: 0 / 0
01.06.2018, 12:43
    #39653917
Изменение данных в таблице с помощью UPDATE
Я бы сделал так:
1. Проверить, заполнены ли все поля;
2. Открыть Recordset на запросе, где в WHERE указаны все условия;
3. Если Recordset пустой - добавить запись, если нет - обновить запись.

Вы же Recordset вообще не открываете, а с "SELECT * FROM Книги WHERE " и не откроете (должно быть WHERE с условиями или без WHERE).
...
Рейтинг: 0 / 0
01.06.2018, 13:12
    #39653940
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных в таблице с помощью UPDATE
MrShinЭто ж Эксель, DCount тут не будет работать с внешней базой
Да, и не понятно, зачем использовать Эксель, если есть Акцесс. Код будет похож, а если перейти на формы на базе таблицы, то все будет намного проще.
Пардоньте-был не внимателен.
А чё не сделать так,используя Access,как Вам предлагают (или лень изучать,хотя в Аксе многое решается намного проще чем в Ёкселе)
...
Рейтинг: 0 / 0
01.06.2018, 13:46
    #39653979
bubucha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных в таблице с помощью UPDATE
Как все очень сложно...
Собрали скуль "INSERT INTO Книги... " , выполнили , проанализировали ошибку... не?
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Изменение данных в таблице с помощью UPDATE / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]