![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Добрый вечер, уважаемые программисты!
Имеется программа, к которой подключена БД. В БД 4 таблицы - Авторы, Книги, Абонемент и Выдачи. Нужно создать в таблице Выдачи запись, которая будет содержать данные из остальных трех таблиц - Фамилию из таблицы Авторы, Название из таблицы Книги, №абонемента и фамилию из таблицы Абонемент. Подскажите, пожалуйста, как это можно реализовать. |
|
#2
|
||||
|
||||
|
Цитата:
Вам поможет INSERT..SELECT http://phpclub.ru/mysql/doc/insert.html Это в общих чертах и конкретно для mysql ) |
|
#3
|
|||
|
|||
|
Дело в том, что данные из таблицы Абонемент нужно выбирать. Т.е. при нажатии кнопки Выдать книгу должно появляться окно со всеми ее данными и с возможностью выбрать из выпадающего списка человека, которому выдается книга.
|
|
#4
|
||||
|
||||
|
не помешала бы структура таблиц, их связь. какие компоненты и субд?
|
|
#6
|
|||
|
|||
|
Цитата:
|
|
#7
|
||||
|
||||
|
Цитата:
Цитата:
|
|
#8
|
|||
|
|||
|
В таблицу Выдача идут поля:
ID автора, фамилия автора - из таблицы Автор ID книги, название книги - из таблицы Книги ID человека, фамилия - из таблицы People должны выбираться Дата выдачи, срок и статус книги - вводятся самостоятельно |
|
#9
|
||||
|
||||
|
Цитата:
добавь Quеry пиши на событии кнопки Код:
Query.close;
query.SQL.text:='INSERT INTO vidacha(idавтора, фамилия автора, idкниги, название книги, фамилиячеловека, дата, срок, статус) VALUES (' +
tableAuthors.fieldbyname('idавтора').asinteger + ', ' +
QuotedStr(tableAuthors.fieldbyname('фамилияавтора').asstring) + ', ' +
tablebooks.fieldbyname('idкниги').asinteger + ', ' +
QuotedStr(tablebooks.fieldbyname('названиекниги').asstring) + ', ' +
QuotedStr(people.fieldbyname('фамилиячеловека').asstring) + ', ' +
datetimepickler1(date) + ', ' +
QuotedStr(edit1.text) + ', ' +
QuotedStr(edit2.text) + ')';
try
Query.ExecSQL;
except
begin
messageDlg('Ошибка SQL', mtError, [mbOK], 0);
exit;
end;
end;подставляй поля согласно схеме данных в этом запросе и добавь на форму datetimepickler1 - дата выдачи, edit1 - срок выдачи, edit2 - статус Последний раз редактировалось Mrak, 21.05.2013 в 09:47. |
| Этот пользователь сказал Спасибо Mrak за это полезное сообщение: | ||
poison-bla (29.05.2013)
| ||
|
#10
|
|||
|
|||
|
Ругается - incompatible types 'integer' and 'string' на asinteger и asstring
|
|
#11
|
||||
|
||||
|
а, ну да. извиняюсь. в запросе используется только текст. ставь везде asstring. думаю база пропустит. если нет - ставь еще кавычки
|
|
#12
|
|||
|
|||
|
Вот эту строку datetimepickler1(date) + ', ' +
я заменила на эту FormatDateTime('dd/mm/yyyy',Form9.DateTimePicker1.DateTime) + ', ' + т.к. иначе работать не хотело. Теперь вылетает ошибка "число содержит синтаксическую ошибку в выражении запроса "23.05.2013" Хотя не очень понятно, почему оно берет не сегодняшнее число, а 23 |
|
#13
|
||||
|
||||
|
с этими датами у меня тож морока была, пока не прочитал, что моя субд по-умолчанию америкосовский тип даты использует. поставил
Код:
formatdatetime(yyyymmdd, ...) а дату устанавливай при, например, активации формы Код:
datetimepickler1.date:=date; |
|
#14
|
|||
|
|||
|
Теперь при запросе выдает ошибку "Переполнение"
![]() |
|
#15
|
||||
|
||||
|
че это такое, не разу не видел
|