powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите в чем проблема
25 сообщений из 68, страница 1 из 3
Подскажите в чем проблема
    #36685286
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2147467259 [MySQL][ODBC 3.51 Driver][mysqld-5.1.38-community]Cannot add or update a child row: a foreign key constraint fails (`it`.`sales`, CONSTRAINT `usluga_id` FOREIGN KEY (`id`) REFERENCES `uslugi` (`id`) ON UPDATE CASCADE)
Код: plaintext
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.
Private Sub ado(a As String)
Adodc1.ConnectionString = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=it; User=root;Password=506;Option=3;"
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "select * from " + a
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
End Sub
Private Sub Command2_Click()
Adodc1.Recordset.AddNew
Adodc1.Recordset("usluga_id").Value = Combo1.Text
Adodc1.Recordset("date").Value = Text2.Text
Adodc1.Recordset("amount").Value = Val(Text1.Text)
Adodc1.Recordset.Update
End Sub

Private Sub Form_Load()
ado ("sales")
Text2.Text = Str(Date)
Conn.Open "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=it; User=root;Password=506;Option=3;"
Set r = Conn.Execute("select * from uslugi")
k =  0 
r.MoveFirst
    Do Until r.EOF
        a = r.Fields("id").Value
        b = r.Fields("name").Value
        Combo1.AddItem a, k
        List1.AddItem (Str(a) + vbTab + b)
        'MsgBox a
        r.MoveNext
        k = k +  1 
    Loop

r.Close
Combo1.Text = "УСЛУГИ"
Combo2.Text = "Клиенты"
End Sub
проблема в том что первая запись добавилась нормально , при добавлении второй стала выходить такая ошибка, ниже структура базы данных(Mysql 5)
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685288
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подскажите в чем проблема , может добавлять лучше через запрос?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685292
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
форма для наглядности
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685296
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что неясно в сообщении об ошибке? Тебе известно, что такое constraint, ключ и внешний ключ?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685305
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
понятно что есть primary key в таблице uslugi (id), есть foreign key в таблице sales (usluga_id)
и связь есть между ними, только я че то не понимаю в чем проблема
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685309
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
понятно что есть primary key в таблице uslugi (id), есть foreign key в таблице sales (usluga_id)
и связь есть между ними, только я че то не понимаю в чем проблема

Ну проблему-то ты и не изложил, то бишь не указал, что ты делаешь и на какой строке возникает эта ошибка, так что я только предполагаю, что на Adodc1.Recordset.Update

Еще вопрос, ты с полной ответственностью за свои действия поставил каскадное обновление?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685326
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
сегодня читал про каскадное обновление (в случае обновления данных в таблице uslugi,обновляются данные и в таблице sales), хотелось чтобы было так))
Shocker.ProНу проблему-то ты и не изложил, то бишь не указал, что ты делаешь и на какой строке возникает эта ошибка, так что я только предполагаю, что на Adodc1.Recordset.Update
именно на этой строке и вышла ошибка
а хотел потренироваться и узнать , как связи работают , как работать с несколькими таблицами,
задача состоит в следующем выбираем услугу из комбо и добавляем данные в ячейку, только первая запись прошла нормально , но почему со второй проблема
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685334
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,

Я с MySQL - редактором не очень, ты уверен, что вот тут все правильно задал?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685339
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
вот блин ))) он автоматом сам так проставил.
поменял как вы показали и нормально)) спасибо.
а разве для целостности данных , не лучше использовать каскадное обновление?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685343
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
и еще вопрос хотел задать,
не удобно использовать комбо в этих целях(так как там ключ а по нему искать потом запись в листбоксе не очень удобно ,для того чтобы правильно выбрать нужный ключ), может посоветуете вы сами как это реализуете?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685344
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и че тогда MySQL про каскадное обновление вопил в сообщении об ошибке. Оно в данном случае никаким боком...

aduka05admа разве для целостности данных , не лучше использовать каскадное обновление?

А зачем тебе каскадное обновление? Ты собираешься ключи менять в таблице услуг? Это, по меньшей мере, странно.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685345
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admне удобно использовать комбо в этих целях(так как там ключ а по нему искать потом запись в листбоксе не очень удобно ,для того чтобы правильно выбрать нужный ключ), может посоветуете вы сами как это реализуете?

см. свойсво комбобока ListItem
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685359
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proсм. свойсво комбобока ListItem
ой, соррисорри, спутал
в общем так:
Код: plaintext
1.
2.
3.
a = r.Fields("id").Value
b = r.Fields("name").Value
Combo1.AddItem b
Combo1.ItemData(Combo1.NewIndex) = a

Код: plaintext
1.
2.
Adodc1.Recordset.AddNew
Adodc1.Recordset("usluga_id").Value = Combo1.ItemData(Combo1.ListIndex)
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685368
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Shocker.ProА зачем тебе каскадное обновление? Ты собираешься ключи менять в таблице услуг? Это, по меньшей мере, странно.
просто в 1с менял код в номенклатуре руками , поэтому думал лишним не будет)
а как сделать так чтобы как в 1с по типу создавать документ и добавлять туда несколько записей , насколько я понимаю это создается отдельно таблица с номерами документов и записей в нем , сколько записей ,столько и строчек с номерами документов ,а в форме записывается это все в массив а далее запись идет всех записей в таблицу?а журнал документов реализуется , примерно так через запрос выводим все записи с номерами документов и группируем ?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685370
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProShocker.Proсм. свойсво комбобока ListItem
ой, соррисорри, спутал
в общем так:
Код: plaintext
1.
2.
3.
a = r.Fields("id").Value
b = r.Fields("name").Value
Combo1.AddItem b
Combo1.ItemData(Combo1.NewIndex) = a

Код: plaintext
1.
2.
Adodc1.Recordset.AddNew
Adodc1.Recordset("usluga_id").Value = Combo1.ItemData(Combo1.ListIndex)

примерно так и думал , только думал что индекс в комбо по любому должен идти по порядку (0.1.2.3)
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685378
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admпросто в 1с менял код в номенклатуре руками , поэтому думал лишним не будет)
Не смешивай.
В 1С, помимо кода, есть еще UID - вот он-то и является настоящим ключом и по нему идет связь между таблицами, а не по коду.

aduka05admа как сделать так чтобы как в 1с по типу создавать документ и добавлять туда несколько записей , насколько я понимаю это создается отдельно таблица с номерами документов и записей в нем , сколько записей ,столько и строчек с номерами документов ,а в форме записывается это все в массив а далее запись идет всех записей в таблицу?а журнал документов реализуется , примерно так через запрос выводим все записи с номерами документов и группируем ?
Не, зачем дублировать данные?
Делается две связанных таблицы, в одной - реквизиты документа (номер, тип, дата, контрагент и т.п.), а в другой - содержимое - код товара, цена, ставка НДС, бух.счет и т.п. Посмотри в конфигураторе - там же все очевидно.

А где редактировать данные... Ну это от фантазии зависит. Лично я последнее время редактируемое содержимое держу в отдельной таблице прямо в базе.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685381
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admпримерно так и думал , только думал что индекс в комбо по любому должен идти по порядку (0.1.2.3)
Индекс и ItemData - не одно и то же.
Индекс определяет сортировку и насильно задавать его совершенно необязательно. Сортировку надо указывать в select-e, который данные для загрузки готовит.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685389
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Shocker.ProДелается две связанных таблицы, в одной - реквизиты документа (номер, тип, дата, контрагент и т.п.), а в другой - содержимое - код товара, цена, ставка НДС, бух.счет и т.п. Посмотри в конфигураторе - там же все очевидно.
и там где содержимое в каждой записи проставляется ключ документа?
Shocker.ProА где редактировать данные... Ну это от фантазии зависит. Лично я последнее время редактируемое содержимое держу в отдельной таблице прямо в базе.
и очищаете ее потом?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685391
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
Shocker.ProДелается две связанных таблицы, в одной - реквизиты документа (номер, тип, дата, контрагент и т.п.), а в другой - содержимое - код товара, цена, ставка НДС, бух.счет и т.п. Посмотри в конфигураторе - там же все очевидно.
и там где содержимое в каждой записи проставляется ключ документа?
Shocker.ProА где редактировать данные... Ну это от фантазии зависит. Лично я последнее время редактируемое содержимое держу в отдельной таблице прямо в базе.
и очищаете ее потом?

Разумеется * 2

Все, ушел спать.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685392
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
для создания форм visual basic используете?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685393
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
спасибо))
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36723617
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

а в чем смысл связывания тогда?
если вдруг пользователь решит удалить данные?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36723643
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admа в чем смысл связывания тогда?
если вдруг пользователь решит удалить данные?

Это соблюдение принципов ЦЕЛОСТНОСТИ ДАННЫХ (перечитай это словосочетание 10 раз).

Необязательно пользователь удалит данные. Ты можешь ошибиться в программе (причем ошибка может быть такая, которая проявляется раз в год), в результате чего могут либо удалиться данные, либо вставиться неправильные данные. Ты можешь начать править базу руками при какой-то модернизации и т.п. Наличие связи не даст тебе допустить такую ошибку - операция по изменению/удалению основного ключа или по вставке неправильных данных просто не будет выполнена.

Кроме того, БД становится гораздо сопровождаемее. Любой программер, который будет дорабатывать базу, откроет диаграмму и разберется, как устроена база. Да и ты сам через пару-тройку лет окажешься в такой ситуации.

По этой же причине надо максимально точно определять типы данных в таблицах, обязательно запрещать NULL там, где по логике вещей его возникнуть не должно и т.п.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36723701
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
спасибо
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724400
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
решение не нашел
смотрел здесь ,хотя много интересного описано там
...
Рейтинг: 0 / 0
25 сообщений из 68, страница 1 из 3
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите в чем проблема
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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