Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2014, 17:38   #1
Посол_Вон
Пользователь
 
Регистрация: 19.05.2014
Сообщений: 24
По умолчанию перенос данных





Приветствую вас программисты!Возникла необходимость создать программу "Электронная библиотека". На данный момент сделал регистрацию пользователей, сотрудников, фильтры и сортировки.Да связывал с помощью Аксесс, Адоквери, Адосоурс,Адоконнекшн.

Сейчас дошел до момента выдачи книг пользователям, на первой картинке я показал форму пользователей, там есть дбгрид а в ней немного данных.
Так вот, нужно перенести фамилию, имя, отчество на вторую форму(вторая картинка)т.е в комбобоксе будут фамилии(когда нажимаю на выпадающий список), после выбора фамилии, остальные данные(имя, отчество) будут автоматически перенесены в edit1, edit2 соответственно.

Далее в планах при нажатии кнопки книга, будет выпадать список книг (я уже создал таблицу с книгами) после чего выбираю дату возврата книги и все эти данные (по идеи) должны автоматически забиваться в таблицу после нажатия определенной кнопки(пока её нету).

Меня ИНТЕРЕСУЕТ на данный момент первый шаг, т.е свзяь первой таблицы пользователи с комбибоксом и едитами.Я связал форму "Выдача книг" с формой "Пользователи".

Последний раз редактировалось Посол_Вон; 22.05.2014 в 17:50.
Посол_Вон вне форума Ответить с цитированием
Старый 22.05.2014, 18:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
т.е в комбобоксе будут фамилии(когда нажимаю на выпадающий список)
Тогда тебе нужен не DBComboBox а DBLookupComboBox, если уж хочешь чтоб список автоматически подхватывал список из базы.
Цитата:
Далее в планах при нажатии кнопки книга, будет выпадать список книг
То же самое - DBLookupComboBox. И вообще можешь от кнопки избавиться.
Комбики эти лукавые поставь рядом - так будет визуальное совмещение абонента и книги.
Да, и желательно чтоб у каждого комбика лукавого был свой DataSet и свои Query.
Идея оформления ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.05.2014, 11:02   #3
Посол_Вон
Пользователь
 
Регистрация: 19.05.2014
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тогда тебе нужен не DBComboBox а DBLookupComboBox, если уж хочешь чтоб список автоматически подхватывал список из базы.

То же самое - DBLookupComboBox. И вообще можешь от кнопки избавиться.
Комбики эти лукавые поставь рядом - так будет визуальное совмещение абонента и книги.
Да, и желательно чтоб у каждого комбика лукавого был свой DataSet и свои Query.
Идея оформления ясна?
Да ясна, но непонятна реализация.Прописал в компонент код:
Код:
ADOQuery1.First;
DBLookupComboBox1.Items.Clear;
while not ADOQuery1.Eof do begin
   DBLookupComboBox1.Items.Add(ADOQuery1.FieldByName('famp').AsString);
   ADOQuery1.Next;
т.е должен брать из адоквери1(формы я связал,в датасет Form4.DataSource1 ,в листсоурс Form4.DataSource1) данные из famp(фамилия пользователя)
Ругается на DBLookupComboBox1.Items.Clear;



Попробовал вот так:
Код:
 pol:=ADOQuery1.FieldValues['famp'];
dbedit1.Text:=ADOQuery1.FieldValues['imp'];
dbedit2.Text:=ADOQuery1.FieldValues['ot4p'];
т.е создал в var переменную pol(integer).

в listsours и keyfield указал нужные ссылки. при запуске программы выдает дает возможность выбрать фамилии (в выпадающем списке), но после выбора виснет с ошибкой
Цитата:
"project project1.exe" raised exception class edatabaseerror with message 'adoquery1:field 'famp' not found'
Вообщем отпишу, что сделал на данный момент.
Вот код:
Код:
pol:=ADOquery1.FieldValues['Kod'];
dbEdit1.Text:=ADOquery1.FieldByName('imap').AsString;
dbEdit2.Text:=ADOquery1.FieldByName('ot4p').AsString;
В keyfield DBLookupComboBox1 выбрал "Kod" (ключевой элемент таблицы)
В listfield DBLookupComboBox1 выбрал "famp" (откуда будут браться значения для выпадающего списка)
В listsource выбрал Form4.DataSource1 (т.е где таблица пользователи)

В datasource и datafield ничего не прописовал т.к вылетает.

При запуске программы в DBLookupComboBox1 выбираю фамилию, в edit меняется Имя и Отчество(как мне и надо)
Но!Увы, уже через секунду вылетает с ошибкой
Цитата:
"project project1.exe" raised exception class edatabaseerror with message 'adoquery1:field 'famp' not found'
и всё, надо закрывать программу.

Если есть мнения, буду рад их услышать


Вообщем вот как выкрутился.
Код убрал в DBLookupComboBox1 полностью.
В DBedit выбрал соответственно (imap,ot4p)

В keyfield DBLookupComboBox1 выбрал "Kod" (ключевой элемент таблицы)
В listfield DBLookupComboBox1 выбрал "famp" (откуда будут браться значения для выпадающего списка)
В listsource выбрал Form4.DataSource1 (т.е где таблица пользователи)

на форму (выдача книг) бросил adoquery и datasource.
в sql adoquery прописал SELECT * FROM pol3ovateli и соеденил connection с первой формой.
при запуске программы выбираю в раскрывающемся списке фамилию, в dbedit-ах меняется имя и отчество.Только вот смогу ли я в будующем эти данные перенести в дбгрид?

Последний раз редактировалось Stilet; 23.05.2014 в 16:33.
Посол_Вон вне форума Ответить с цитированием
Старый 23.05.2014, 16:38   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
уже через секунду вылетает с ошибкой
Значит недонастроил. Так не стелепатируешь - нужно смотреть и анализировать проект. Если хочешь - выложи. Будет время вечерком - гляну.
Цитата:
Только вот смогу ли я в будующем эти данные перенести в дбгрид?
По-моему ты не совсем понял что я тебе хотел сказать в моем посте выше...
Ибо никаких переносов в ДБгрид делать и не нужно. Идея была такая: В Лукавых Комбиках выбираются записи. Лукавые автоматически после выбора устанавливают курсор на нужную запись в своих датасетах, а уже потом по кнопке "сохранить" или типа можно из этих датасетов в другую таблицу (содержащую связь) внести новую запись выбрав ключевые данные из наборов, к которым подключены Лукавые.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.05.2014, 16:09   #5
Посол_Вон
Пользователь
 
Регистрация: 19.05.2014
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Значит недонастроил. Так не стелепатируешь - нужно смотреть и анализировать проект. Если хочешь - выложи. Будет время вечерком - гляну.

По-моему ты не совсем понял что я тебе хотел сказать в моем посте выше...
Ибо никаких переносов в ДБгрид делать и не нужно. Идея была такая: В Лукавых Комбиках выбираются записи. Лукавые автоматически после выбора устанавливают курсор на нужную запись в своих датасетах, а уже потом по кнопке "сохранить" или типа можно из этих датасетов в другую таблицу (содержащую связь) внести новую запись выбрав ключевые данные из наборов, к которым подключены Лукавые.
Спс за подсказку, скорее всего ваш метод лучше чем мой, но я выбрал более геморный путь
Посол_Вон вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос данных Ericnex БД в Delphi 1 06.01.2013 11:25
MySQL перенос данных между базами данных с MyDAC Nikolay88 БД в Delphi 3 14.05.2011 00:17
Перенос данных rule-z БД в Delphi 3 05.03.2011 17:03
Изменение данных и перенос данных из одной таб в другую Kot9ra Microsoft Office Access 13 02.07.2010 12:22
сортировка данных (пересчет возможных вариантов комбинаций, перенос данных в таблицу) Vitalik85 Microsoft Office Excel 4 12.08.2009 00:30