Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.12.2013, 10:43
Kis Kis вне форума
Новичок
 
Регистрация: 02.09.2011
Сообщения: 76
Репутация: 11
По умолчанию 2 Adoquery

Всем добра! Проблема такая...есть 2 adoquery. в обоих есть столбец с данными "ГН". Нужно сделать так чтобы в адо2 выгрузилось время которое соответсвует "ГН" в адо1. в адо2 "ГН" в 4 столбце, в адо1 "ГН" во 2 столбце, "время" указано в 4 столбце. Нужно данные из столбца 4 адо1 соответствующие "ГН" записать в столбец 5 адо2. С циклами у меня туго, поогите пожалуйста написать код
Ответить с цитированием
  #2  
Старый 19.12.2013, 11:01
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Kis
Всем добра! Проблема такая...есть 2 adoquery. в обоих есть столбец с данными "ГН". Нужно сделать так чтобы в адо2 выгрузилось время которое соответсвует "ГН" в адо1. в адо2 "ГН" в 4 столбце, в адо1 "ГН" во 2 столбце, "время" указано в 4 столбце. Нужно данные из столбца 4 адо1 соответствующие "ГН" записать в столбец 5 адо2. С циклами у меня туго, поогите пожалуйста написать код
Такое лучше делать не циклами, а SQL запросом.

Циклами так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery1.First;
  while not ADOQuery1.Eof do
  begin
    if ADOQuery2.Locate('ГН', ADOQuery1['ГН'], []) then
    begin
      ADOQuery2.Edit;
      ADOQuery2['Время'] := ADOQuery1['Время'];
      ADOQuery2.Post;
    end;
    ADOQuery1.Next;
  end;
end;
Ответить с цитированием
  #3  
Старый 19.12.2013, 13:18
Kis Kis вне форума
Новичок
 
Регистрация: 02.09.2011
Сообщения: 76
Репутация: 11
По умолчанию

сделал как ты посоветовал, но он у меня не находит идентичные гаражные...проверял через точку остановы. у меня запрос из базы организуется с обрезанием имени "ГН"
Код:
ADOQuery1.SQL.Add('select * from (SELECT *, IIF(unit = "Ñ÷èòûâàòåëü 2-2", "çàåçä", "âûåçä") as new_str, mid(name,10) as new_str1 FROM events where events.message = "ïðîõîä ñîâåðøåí")order by new_str1');
т.е. в оригинале имя выглядит "987\77676 876", а в кверике "876". может быть в этом проблема?
Ответить с цитированием
  #4  
Старый 19.12.2013, 13:42
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Kis
сделал как ты посоветовал, но он у меня не находит идентичные гаражные...проверял через точку остановы. у меня запрос из базы организуется с обрезанием имени "ГН"
Код:
ADOQuery1.SQL.Add('select * from (SELECT *, IIF(unit = "Считыватель 2-2", "заезд", "выезд") as new_str, mid(name,10) as new_str1 FROM events where events.message = "проход совершен")order by new_str1');
т.е. в оригинале имя выглядит "987\77676 876", а в кверике "876". может быть в этом проблема?
Да. Сопоставление производи по идентичным полям в обоих ADOQuery.

И ещё у метода Locate есть параметр loPartialKey который позволяет искать по частичному совпадению:
Код:
ADOQuery2.Locate('ГН', ADOQuery1['ГН'], [loPartialKey]);
Ответить с цитированием
  #5  
Старый 19.12.2013, 14:05
Kis Kis вне форума
Новичок
 
Регистрация: 02.09.2011
Сообщения: 76
Репутация: 11
По умолчанию

для проверки ввел две переменные, в отладчике смотрю, они обе равны "103". Но все равно пробегает мимо бегина с эдитом

Код:
 begin
  ADOQuery2.First;
  while not ADOQuery1.Eof do
  begin
  d:= ADOQuery1['new_str1'];
  f:= ADOQuery2['garn'];
    if ADOQuery2.Locate('garn', ADOQuery1['new_str1'], []) then
    begin
      ADOQuery2.Edit;
      k := ADOQuery1['datetime'];
      ADOQuery2.Post;
    end;
    ADOQuery2.Next;
  end;
  end;

вставил поиск по части имени, тоже не помогло
Ответить с цитированием
  #6  
Старый 19.12.2013, 14:10
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Kis
для проверки ввел две переменные, в отладчике смотрю, они обе равны "103". Но все равно пробегает мимо бегина с эдитом
Эти поля целочисленного типа?
Попробуй так:
Код:
    if ADOQuery2.Locate('garn', ADOQuery1.FieldByName('new_str1').AsInteger, []) then
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:34.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025