powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / делфи 7 работа с бд
3 сообщений из 3, страница 1 из 1
делфи 7 работа с бд
    #39941754
Arakul777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите написать код что бы комбобокс добавляет новую запись в таблицу заказы в столбец KOD_OWNER, но данные брал из таблицы vladelec
...
Рейтинг: 0 / 0
делфи 7 работа с бд
    #39941758
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
27.03.2020 18:14, Arakul777 пишет:
>
> Помогите написать код что бы комбобокс добавляет новую запись в таблицу заказы в столбец KOD_OWNER, но данные брал из таблицы vladelec
>

https://www.sql.ru/forum/job-offers
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
делфи 7 работа с бд
    #39941801
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Не лепите DBкомпоненты в DataModule. С течением времени их там станет столько что можно запутаться. Кидайте их на те формы, где они используются.

2. Для подобных операций используются Lookup конторолы

3. Если всё же хочется заморочиться через ComboBox, то
а. На форму с гридом (ЗАКАЗОМ) повесить две кнопки (Добавить)ButtonInsert и (Изменить)ButtonUpdate. Обе ссылаются на одну процедуру редактирования
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
procedure TFormOrder.ButtonInsertClick(Sender: TObject);
var Id: integer;
begin
// показываем форму диалога, где пользователь заполняет параметры и добавляет/редактирует строку
  Id := ShowEditZakaz(Sender=ButtonInsert,qOrder);
  if Id > 0 then begin
    ReopenZakaz;
    qOrders.Locate('KOD_ZAKAZA',Id,[]); // думаю что qOrders отображает ваши заказы
  end;  
end;



б. В форме редактирования заказа функция. На самой форме контролы редактирования и две кнопки Ok, Cancel

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
// функция, которая будет создавать форму редактирования.
function ShowEditZakaz(TheInsert: boolean; DS: TDataset): integer;
begin
  with TDOrder.Create(Application) do begin
// заполняем ComboBox справочником Владельцев
// лучше всего написать отдельную процедуру, которая будет заполнять любой комбик с любого датасета
// типа InitComboBox(DS: TDataset; FieldName, KeyField: string);
    with Qvladelec do begin
      Open;
      while not Eof do begin
        ComboBox1.Items.AddObject(Qvladelec['NAME']+' '+Qvladelec['SURNAME']+' '+Qvladelec['OTCHESTVO'],TObject(Qvladelec['KOD_OWNER']);
        Next;
      end;
    end;
// заполняем контролы, если редактируем запись
    if not TheInsert  then begin
      ComboBoxVladelec.ItemIndex := ComboBoxVladelec.Items.IndexOfObject(DS['KOD_OWNER']);
      DateEditDataPostuplenia.Date := DS['DATA_POSTUPLENIA'];
      .....
    end;
// показываем форму редактирования
    if ShowModal = 1 then begin
// пользователь нажал на ОК, вставляем запись
      if TheInsert then begin
// добавляем в таблицу новую запись 
        qZakazChange.SQL.Text := 'insert into Orders(KOD_OWNER,.....) values(:P1, ......) return @@identity';
// return @@identity возвращаем ID новой сточки. Не уверен что IB именно так
        qZakazChange.ParamByName('P1').Value : = integer(ComboBoxVladelec.Items.Objects[ComboBoxVladelec.ItemIndex]);
        qZakazChange.ExecQuery;
        Result := qZakazChange.ParamByName('@RETURN_VALUE').Value; // возвращаем ID новой строки, чтобы потом можно было на неё спозиционироваться
      end
      else begin
// изменяем запись
        Result := DS['KOD_ZAKAZA'];
        qZakazChange.SQL.Text := 'update Orders set KOD_OWNER = :P1 where KOD_ZAKAZA=:P2';
        qZakazChange.ParamByName('P1').Value : = integer(ComboBoxVladelec.Items.Objects[ComboBoxVladelec.ItemIndex]);
        qZakazChange.ParamByName('P2').Value : = Result;
        qZakazChange.ExecQuery;
      end;
    end
    else Result := -1; // возвращаем -1 (пользователь отказался редактировать)
    Free;
  end;
end;
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / делфи 7 работа с бд
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]