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

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

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2015, 13:06   #1
АнтонКурышов
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 17
По умолчанию База данных в Lazarus

У меня есть БД в IBexpert, мне нужно создать приложение в Lazarus'е для работы с этой БД, и так подключил базу данных начал создавать, и вот такая проблема. Не знаю как добавить новою записи в таблицу, так как одно из значений должно браться из другой таблицы. Помогите пожалуйста, очень надо, курсовая на кону.

Последний раз редактировалось АнтонКурышов; 22.12.2015 в 13:29.
АнтонКурышов вне форума Ответить с цитированием
Старый 22.12.2015, 13:51   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Доступ через какие компоненты?
Цитата:
так как одно из значений должно браться из другой таблицы.
Это ничего не меняет. Сначала получаете все сведения, а потом уже готовите запись. Откуда получены сведения - из файла, из другой таблицы или с клавиатуры, какая разница?
Опять же проблем-то в чем? Вы не можете получить данные "из другой таблицы". Или Вы не можете создать запись?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 22.12.2015, 14:05   #3
АнтонКурышов
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 17
По умолчанию

Цитата:
Доступ через какие компоненты?
Доступ через компонент SQLquery, то есть у меня на форме два DBGrid к каждой свой запрос, в одной отображается информация о покупателях(у каждого свой ID). а во второй отображается таблица накладные, где и есть запись ID-покупателя. Вообщем я добавляю запись в таблицу покупатель, а при добавлении записи в таблицу накладные, мне нужно указать ID'шник покупателя, которого я только что добавил, в предыдущую таблицу. вот я и не знаю как брать ID'шник из таблицы покупатели и добавлять его в таблицу накладные.

Последний раз редактировалось Utkin; 22.12.2015 в 15:05.
АнтонКурышов вне форума Ответить с цитированием
Старый 22.12.2015, 14:05   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну вообще все зависит от самой базы. Нужно смотреть твой код.
Так что лучший вариант: Написать хранимую процедуру, внутри которой упаковать добавление. Если нет то например можно делать так:
Код:
...SQL.Text:='Insert into ... (...) VALUES (..., (Select Добавляемое From Таблица Where некое поле = Чему-то),...)';
Т.е. использовать подзапрос в запросе для получения данных.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.12.2015, 14:11   #5
АнтонКурышов
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 17
По умолчанию

вот здесь происходит добавление других полей в таблицу накладные, и что еще нужно чтоб добавлялись ID'шники покупателя?
Код:
procedure TForm2.Button1Click(Sender: TObject);
begin
  SQLQuery1.Close;
   SQLQuery1.SQL.Clear;
   SQLQuery1.SQL.Add('select max(NAKLADNAY_id) from NAKLADNAY');
   SQLQuery1.Open;
   SQLQuery1.First;
   NAKID:=LongInt(SQLQuery1.FieldByName('max').AsInteger);
   SQLQuery1.Next;
   if (Edit8.Text <> '') and (Edit9.Text <>'')  then
    begin SQLQuery1.Close;
   SQLQuery1.SQL.Clear;
   SQLQuery1.SQL.Text:='insert into NAKLADNAY (NAKLADNAY_ID, NAKLADNAY_DATA, NAKLADNAY_SUMMA) values (:ID, :DATA, :SUMMA )';
   SQLQuery1.Params.ParamByName('ID').Value:=LongInt(NAKID)+1;
   SQLQuery1.Params.ParamByName('DATA').Value:=Edit8.Text;
   SQLQuery1.Params.ParamByName('SUMMA').Value:=Edit9.Text;
   SQLQuery1.ExecSQL;
   SQLQuery1.SQL.Text:='select * from NAKLADNAY';
     SQLQuery1.Open;
     end
    end;
Цитата:
Ну вообще все зависит от самой базы.
В самой базе таблицы покупатель и накладные связаны при помощи внешнего ключа, то есть таблица накладные ссылается на таблицу покупатель, а точнее на запись pokupatel_ID

Последний раз редактировалось Stilet; 22.12.2015 в 16:12.
АнтонКурышов вне форума Ответить с цитированием
Старый 22.12.2015, 14:30   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
вот я и не знаю как брать ID'шник из таблицы покупатели
т.е. где-то в программе(форме/DBgrid-e) уже ЕСТЬ выставленный (выбранный) покупатель ?
Код:
SQLQuery1.SQL.Text:='insert into NAKLADNAY (..., id_pokup) values (...., :pok);
.....
SQLQuery1.ParamByName('pok').AsInteger:=FormX.DBgridP.DataSource.DataSet('id').AsInteger;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 22.12.2015, 14:35   #7
АнтонКурышов
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 17
По умолчанию

Цитата:
т.е. где-то в программе(форме/DBgrid-e) уже ЕСТЬ выставленный (выбранный) покупатель ?

ДА в DBgrid-е уже есть покупатель и там виден его id-шник

Последний раз редактировалось Utkin; 22.12.2015 в 15:06.
АнтонКурышов вне форума Ответить с цитированием
Старый 23.12.2015, 00:24   #8
АнтонКурышов
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 17
По умолчанию

Тема по-прежнему актуальна, я так и не решил этот вопрос, помогите!!
АнтонКурышов вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Postgres: может ли база данных дать отчет, какой язык используется в данных? Blondy SQL, базы данных 2 30.03.2014 06:25
база данных. добавление и удаление данных midiss Общие вопросы Delphi 3 09.12.2011 13:07
База данных и технология хранения данных Kate1 Помощь студентам 2 17.11.2011 23:27
Небольшая база в Open Office База данных. sashaman Фриланс 3 11.04.2010 20:13
База данных с возможностью приема данных из файлов Excel Al_Sha БД в Delphi 6 16.10.2009 15:34