Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.05.2013, 20:57
poison-bla poison-bla вне форума
Прохожий
 
Регистрация: 17.05.2013
Сообщения: 28
Версия Delphi: Delphi 7, XE5
Репутация: 10
По умолчанию Создание записи в таблице

Добрый вечер, уважаемые программисты!
Имеется программа, к которой подключена БД. В БД 4 таблицы - Авторы, Книги, Абонемент и Выдачи.

Нужно создать в таблице Выдачи запись, которая будет содержать данные из остальных трех таблиц - Фамилию из таблицы Авторы, Название из таблицы Книги, №абонемента и фамилию из таблицы Абонемент.

Подскажите, пожалуйста, как это можно реализовать.
Ответить с цитированием
  #2  
Старый 17.05.2013, 22:05
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

Цитата:
Сообщение от poison-bla
Добрый вечер, уважаемые программисты!
Имеется программа, к которой подключена БД. В БД 4 таблицы - Авторы, Книги, Абонемент и Выдачи.

Нужно создать в таблице Выдачи запись, которая будет содержать данные из остальных трех таблиц - Фамилию из таблицы Авторы, Название из таблицы Книги, №абонемента и фамилию из таблицы Абонемент.

Подскажите, пожалуйста, как это можно реализовать.

Вам поможет INSERT..SELECT
http://phpclub.ru/mysql/doc/insert.html
Это в общих чертах и конкретно для mysql )
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #3  
Старый 20.05.2013, 18:49
poison-bla poison-bla вне форума
Прохожий
 
Регистрация: 17.05.2013
Сообщения: 28
Версия Delphi: Delphi 7, XE5
Репутация: 10
По умолчанию

Дело в том, что данные из таблицы Абонемент нужно выбирать. Т.е. при нажатии кнопки Выдать книгу должно появляться окно со всеми ее данными и с возможностью выбрать из выпадающего списка человека, которому выдается книга.
Ответить с цитированием
  #4  
Старый 20.05.2013, 19:00
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

не помешала бы структура таблиц, их связь. какие компоненты и субд?
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #5  
Старый 20.05.2013, 19:05
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Может немного и не по теме, но посмотрите вот это.
Ответить с цитированием
  #6  
Старый 20.05.2013, 20:00
poison-bla poison-bla вне форума
Прохожий
 
Регистрация: 17.05.2013
Сообщения: 28
Версия Delphi: Delphi 7, XE5
Репутация: 10
По умолчанию

Цитата:
Сообщение от Mrak
не помешала бы структура таблиц, их связь. какие компоненты и субд?
Вот как-то так все. В программе 3 вкладки. На вкладке Авторы находятся таблицы Author и Book. На Абонементе - таблица People и ниже таблица с выдачами для определенного человека. А на третьей вкладке та же таблица, только высвечиваются все выдачи.
Изображения
Тип файла: jpg 1.jpg (71.4 Кбайт, 12 просмотров)
Тип файла: jpg 3.jpg (91.7 Кбайт, 6 просмотров)
Тип файла: jpg 4.jpg (54.5 Кбайт, 6 просмотров)
Тип файла: jpg 5.jpg (85.4 Кбайт, 9 просмотров)
Ответить с цитированием
  #7  
Старый 20.05.2013, 22:50
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

Цитата:
Сообщение от poison-bla
при нажатии кнопки Выдать книгу должно появляться окно со всеми ее данными
перечисли поля, которые должны вывестись в новой таблице (на основе схемы данных)

Цитата:
Сообщение от poison-bla
и с возможностью выбрать из выпадающего списка человека, которому выдается книга.
посмотри про lookupcombobox
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #8  
Старый 20.05.2013, 23:17
poison-bla poison-bla вне форума
Прохожий
 
Регистрация: 17.05.2013
Сообщения: 28
Версия Delphi: Delphi 7, XE5
Репутация: 10
По умолчанию

В таблицу Выдача идут поля:
ID автора, фамилия автора - из таблицы Автор
ID книги, название книги - из таблицы Книги
ID человека, фамилия - из таблицы People должны выбираться

Дата выдачи, срок и статус книги - вводятся самостоятельно
Ответить с цитированием
  #9  
Старый 21.05.2013, 09:45
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
Сообщение

Цитата:
Сообщение от poison-bla
В таблицу Выдача идут поля:
ID автора, фамилия автора - из таблицы Автор
ID книги, название книги - из таблицы Книги
ID человека, фамилия - из таблицы People должны выбираться

Дата выдачи, срок и статус книги - вводятся самостоятельно
добавь из вкладки datacontrols dblookupcombobox, ставь ему свойства listsource = source таблицы people, в keyfield и listfield пиши surname

добавь 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  
Старый 23.05.2013, 19:52
poison-bla poison-bla вне форума
Прохожий
 
Регистрация: 17.05.2013
Сообщения: 28
Версия Delphi: Delphi 7, XE5
Репутация: 10
По умолчанию

Ругается - incompatible types 'integer' and 'string' на asinteger и asstring
Ответить с цитированием
  #11  
Старый 24.05.2013, 09:08
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

а, ну да. извиняюсь. в запросе используется только текст. ставь везде asstring. думаю база пропустит. если нет - ставь еще кавычки
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #12  
Старый 26.05.2013, 12:42
poison-bla poison-bla вне форума
Прохожий
 
Регистрация: 17.05.2013
Сообщения: 28
Версия Delphi: Delphi 7, XE5
Репутация: 10
По умолчанию

Вот эту строку datetimepickler1(date) + ', ' +
я заменила на эту FormatDateTime('dd/mm/yyyy',Form9.DateTimePicker1.DateTime) + ', ' +
т.к. иначе работать не хотело. Теперь вылетает ошибка "число содержит синтаксическую ошибку в выражении запроса "23.05.2013"
Хотя не очень понятно, почему оно берет не сегодняшнее число, а 23
Ответить с цитированием
  #13  
Старый 26.05.2013, 14:33
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

с этими датами у меня тож морока была, пока не прочитал, что моя субд по-умолчанию америкосовский тип даты использует. поставил
Код:
formatdatetime(yyyymmdd, ...)
и все заработало.

а дату устанавливай при, например, активации формы
Код:
datetimepickler1.date:=date;
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #14  
Старый 28.05.2013, 19:29
poison-bla poison-bla вне форума
Прохожий
 
Регистрация: 17.05.2013
Сообщения: 28
Версия Delphi: Delphi 7, XE5
Репутация: 10
По умолчанию

Теперь при запросе выдает ошибку "Переполнение"
Ответить с цитированием
  #15  
Старый 28.05.2013, 23:46
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

че это такое, не разу не видел
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter