Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Посол_вон
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 12
1

как перенести данные?

22.05.2014, 15:56. Просмотров 1541. Ответов 9
Метки нет (Все метки)

как  перенести данные?


как  перенести данные?


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

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

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

Меня ИНТЕРЕСУЕТ на данный момент первый шаг, т.е свзяь первой таблицы пользователи с комбибоксом и едитами.
Как можно это реализвать?Даже мыслей нету(хотя может с sql побаловаться) уже 3 ий час бьюсь над этим вопросом, результатов нет((
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2014, 15:56
Ответы с готовыми решениями:

Как перенести данные из DBGrid
Привет. Мне надо перенести данные из одной базы данных в другую. Я выбираю...

Как перенести данные из ADOQuery в ComboBox
Хочу чтобы в ComboBox отобржался список пользователей который получаем при...

Как перенести данные из dbgrid нужной строки в tedit
Есть таблица dbgrid данные входят с бд msaccess используя компоненты...

Перенести данные из файла в DBGrid
Надо перенести данные из .exp в dbgrid или в access чтобы он отображался в...

Перенести данные из одного dbgrid в другой
Здравствуйте! Подскажите как можно реализовать следующее, есть две...

9
InterA
3 / 3 / 3
Регистрация: 14.03.2014
Сообщений: 18
22.05.2014, 17:59 2
Не специалист, но помогу чем смогу)
данная процедура заполняет комбобокс фамилиями.

Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.FormShow(Sender: TObject);
begin
ADOQuery1.First;
ComboBox1.Items.Clear;
while not ADOQuery1.Eof do begin
   ComboBox1.Items.Add(ADOQuery1.FieldByName('НазваниеКолонкиИзКоторойНужноЗанестиДанныеВКомобокс').AsString);
   ADOQuery1.Next;
end;
end;
Добавление в БД происходит следующим образом. Допустим при нажатии на кнопку "Добавить"
Delphi
1
2
3
4
5
6
7
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  ADOQuery1.Insert;
  ADOQuery1.FieldByName('НазваниеКолонкиВКоторуююНужноДобавитьЗапись').AsString:=Edit1.Text;
  ADOQuery1.Post; //Сохранение в БД
  Edit1.Text:='';
 end;
Данная процедура позволяет прокручивать БД с помощью колесика мышки, если БД будет объёмная.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm3.MouseWheelHandler(var Message: TMessage);
var  
p:TPoint;
begin
GetCursorPos(p);
If WindowFromPoint(p)=DBGrid1.Handle then
begin
  If Message.WParam<0
 then
  DBGrid1.Perform(WM_VSCROLL, SB_LINEDOWN, 0) 
 else
  DBGrid1.Perform(WM_VSCROLL, SB_LINEUP, 0);
end;
end;
Чтобы она заработала нужно добавить в type:
Delphi
1
2
3
4
type
TForm1 = class(Tform)
procedure MouseWheelHandler(var Message: TMessage); override;
 ...
Очищает всю базу данных
Delphi
1
2
3
4
5
6
7
try
    DBGrid1.DataSource.DataSet.First;
    while not DBGrid1.DataSource.DataSet.Eof
    do DBGrid1.DataSource.DataSet.Delete;
    finally
    DBGrid1.DataSource.DataSet.EnableControls;
  end;
Отобразить Таблицу с книгами при нажатии на кнопку можно так
Delphi
1
2
3
4
5
6
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='SELECT Книги From НазваниеТаблицы ';
ADOQuery1.open;
end;

Как отобразить в эдитах имя и отчество при выборе фамилии в комбобоксе - не в курсе) но если будут еще какие вопросы - пиши, постараюсь помочь
0
Посол_вон
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 12
23.05.2014, 10:57  [ТС] 3
Delphi
1
2
3
4
5
ADOQuery1.First;
DBLookupComboBox1.Items.Clear;
while not ADOQuery1.Eof do begin
   DBLookupComboBox1.Items.Add(ADOQuery1.FieldByName('famp').AsString);
   ADOQuery1.Next;
Ругается на Items
DBLookupComboBox1.Items.Clear;
0
InterA
3 / 3 / 3
Регистрация: 14.03.2014
Сообщений: 18
23.05.2014, 12:18 4
В "DBLookUpComboBox" достаточно правильно указать KeyField, DataSource, ListSource и ListField
0
Посол_вон
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 12
23.05.2014, 12:27  [ТС] 5
В том то и дел, что всё заполнено( Да, фамилии он выдаёт в расскрывающемся списке. но после выбора фамилии вылетает.Вот код:

Delphi
1
2
3
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'
0
InterA
3 / 3 / 3
Регистрация: 14.03.2014
Сообщений: 18
23.05.2014, 14:14 6
А где используется переменная pol?
это единственная строчка где она есть?

Я изменив строки KeyField, ListSource и ListField получаю выбранную строки без ошибок
0
Миниатюры
как  перенести данные?  
Посол_вон
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 12
23.05.2014, 15:04  [ТС] 7
Да!Pol есть только в var

Добавлено через 8 минут
Вообщем отпишу, что сделал на данный момент.
Вот код:
Delphi
1
2
3
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'
и всё, надо закрывать программу.

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

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

на форму (выдача книг) бросил adoquery и datasource.
в sql adoquery прописал SELECT * FROM pol3ovateli и соеденил connection с первой формой.
при запуске программы выбираю в раскрывающемся списке фамилию, в dbedit-ах меняется имя и отчество.Только вот смогу ли я в будующем эти данные перенести в дбгрид?
0
InterA
3 / 3 / 3
Регистрация: 14.03.2014
Сообщений: 18
23.05.2014, 15:30 8
Лучший ответ Сообщение было отмечено Посол_вон как решение

Решение

Добавление в БД происходит следующим образом. Допустим при нажатии на кнопку "Добавить"
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  ADOQuery1.Insert;
  ADOQuery1.FieldByName('imap').AsString:=DBEdit1.Text; //Добавит содержимое DBedit1 в колонку imap
  ADOQuery1.FieldByName('ot4p').AsString:=DBEdit2.Text; //Добавит содержимое DBedit2 в колонку ot4p
  ADOQuery1.Post; //Сохранение в БД
  DBEdit1.Text:='';
  DBEdit2.Text:='';
 end;
0
Посол_вон
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 12
23.05.2014, 15:33  [ТС] 9
InterA спс большое за Вашу помощь, сейчас разберусь с книгами, календарём и попробую ваш метод подключения(ориентировочно уже завтра).

Кстате, забыл спросить , мне нужно в аксессе новую таблицу создать? c полями famp, ot4p,imap и т.д?
0
InterA
3 / 3 / 3
Регистрация: 14.03.2014
Сообщений: 18
23.05.2014, 16:08 10
К сожалению, я не уверен что смогу ответить вам наверняка по данному вопросу)
0
23.05.2014, 16:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2014, 16:08

По нажатию кнопки перенести данные в другую таблицу
Имеется форма с двумя таблицами DBGRID(использовала ACCESS). Как по нажатию на...

Перенести все данные одной таблицы в другую
как правильно построить запрос на перенос всех данных из таблица1 в таблица2 ...

Как определить редактировались ли данные? Как редактировать данные через DBEditEh
Доброго времени суток! Снова требуется ваш совет. Пишу программу, через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru