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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2008, 12:15   #1
zimmion
Пользователь
 
Регистрация: 25.02.2008
Сообщений: 16
По умолчанию Delphi7+IB (Поиск и вставка данных)

подскажите плз: есть на форме дбедит11, дбедит12, дбедит13 связанные с Табл1 (поля 11, 12, 13), есть Табл2 с полями 21, 22, 23. Нужно чтобы при вводе в дбедит11 данные бы сравнивались с данными поля21 в Табл2 и если есть совпадение, то в дбедит12 и дбедит13 данные подставлялись из Табл2 (поле22, поле23)?
zimmion вне форума Ответить с цитированием
Старый 02.09.2008, 13:53   #2
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

if dataset.locate(....) then
+ F1 + мозг
_Engine_ вне форума Ответить с цитированием
Старый 02.09.2008, 14:10   #3
zimmion
Пользователь
 
Регистрация: 25.02.2008
Сообщений: 16
По умолчанию

Код:
Procedure Form1.дбедит11Change(Sender: TObject);
begin
  IF Табл2.Locate('Поле21',дбедит11.text,[]) Then
    Begin
      дбедит12.text := Табл2.FieldByName('Поле22').Value;
      ...
    End;
end;
Так? Выдает ошибку о том, что не может записать в дбедит (стринг) нулевое значение поля...
zimmion вне форума Ответить с цитированием
Старый 02.09.2008, 14:16   #4
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Что, прямо так по русски и пишет?
Во-первых, надо набор данных перевести в режим редактирования, перед изменением данных и после редактирования сохранить сделанные изменения.
_Engine_ вне форума Ответить с цитированием
Старый 02.09.2008, 15:12   #5
zimmion
Пользователь
 
Регистрация: 25.02.2008
Сообщений: 16
По умолчанию

Есть форма Form_Contrag на которой расположена dbgrid_jur. При дблклике на выбраной записи выполняется след процедура:
Код:
procedure TForm_Contrag.dbgrid_jurDblClick(Sender: TObject);
begin

    DM1.jur.Locate('j_id',DM1.Query.fieldbyname('j_id').AsInteger,[loCaseInsensitive]);
    DM1.jacc.Locate('j_id',DM1.Query.fieldbyname('j_id').AsInteger,[loCaseInsensitive]);
    DM1.jper.Locate('j_id',DM1.Query.fieldbyname('j_id').AsInteger,[loCaseInsensitive]);
    DM1.jper2.Locate('j_id',DM1.Query.fieldbyname('j_id').AsInteger,[loCaseInsensitive]);
    DM1.jdod1.Locate('j_id',DM1.Query.fieldbyname('j_id').AsInteger,[loCaseInsensitive]);
    try
     Form_Jur_Info:=TForm_Jur_Info.Create(nil);
     Form_Jur_Info.PageControl1.ActivePageIndex:=0;
     Form_Jur_Info.ShowModal;
     Form_Jur_Info.btn_close_Jur_Info.Focused;
    finally
     Form_Jur_Info.Free;
    end;
end;
В результате открывается форма Form_Jur_Info с данными выбраного в dbgrid_jur предприятия.

Я закрываю форму Form_Jur_Info, потом выбираю в dbgrid_jur другую запись дблкликом, но мне форму не открывает, а выдает ошибку и курсор в коде программы ставиться на строку:
Код:
if DM1.bank.Locate('bank_mfo',Form_Jur_Info.bde_22.text,[]) then
zimmion вне форума Ответить с цитированием
Старый 02.09.2008, 15:20   #6
zimmion
Пользователь
 
Регистрация: 25.02.2008
Сообщений: 16
По умолчанию

Код:
procedure TForm_Jur_Info.bde_22Change(Sender: TObject);
begin
   if DM1.bank.Locate('bank_mfo',Form_Jur_Info.bde_22.text,[]) then
    Begin

      DM1.jacc.Edit;
      Form_Jur_Info.bde_23.Field.Value:=DM1.bank.FieldByName('bank_mfo').Value;
      Form_Jur_Info.bde_27.Field.Value:=DM1.bank.FieldByName('bank_kcountry').Value;
      Form_Jur_Info.bde_28.Field.Value:=DM1.bank.FieldByName('bank_country').Value;
      Form_Jur_Info.bde_29.Field.Value:=DM1.bank.FieldByName('bank_index').Value;
      Form_Jur_Info.bde_30.Field.Value:=DM1.bank.FieldByName('bank_koblast').Value;
      Form_Jur_Info.bde_31.Field.Value:=DM1.bank.FieldByName('bank_oblast').Value;
      Form_Jur_Info.bde_32.Field.Value:=DM1.bank.FieldByName('bank_kregion').Value;
      Form_Jur_Info.bde_33.Field.Value:=DM1.bank.FieldByName('bank_region').Value;
      Form_Jur_Info.bde_34.Field.Value:=DM1.bank.FieldByName('bank_city').Value;
      Form_Jur_Info.bde_35.Field.Value:=DM1.bank.FieldByName('bank_street').Value;
      Form_Jur_Info.bde_36.Field.Value:=DM1.bank.FieldByName('bank_building').Value;
      Form_Jur_Info.bde_37.Field.Value:=DM1.bank.FieldByName('bank_trunk').Value;
      Form_Jur_Info.bde_38.Field.Value:=DM1.bank.FieldByName('bank_office').Value;
      DM1.jacc.Post;
    end;
Данный запрос ищет запись и вставляет данные, вот только немогу второй раз открыть форму Form_Jur_Info???
zimmion вне форума Ответить с цитированием
Старый 02.09.2008, 15:51   #7
zimmion
Пользователь
 
Регистрация: 25.02.2008
Сообщений: 16
По умолчанию

Сделал не на событие ончейнж а на бтнклик и проблем с повторными запусками Form_Jur_Info нет )))
zimmion вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск данных aston Microsoft Office Excel 9 04.04.2008 16:30
Вставка данных(Excel) из clipboard в DBGrid mahsus Общие вопросы Delphi 1 07.10.2007 02:02
Delphi7. Поиск в TRichEdit Andrei Компоненты Delphi 0 20.06.2007 12:52