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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.12.2011, 13:41
Lokky Lokky вне форума
Прохожий
 
Регистрация: 19.12.2011
Сообщения: 4
Репутация: 10
По умолчанию Помогите расшифровать строку запроса

Здравствуйте.
Столкнулся с такой проблемой. Есть куча кода - чужого. Опыта в разборе кода практически нет. Есть вот такая строка:
qSelect.ParamByName('workid').Value := DBNumberEditFW1.Value;

В упор не могу понять откуда берется этот 'workid'? В смысле где можно посмотреть почему 'workid', а не, допустим 'ВасяПупкин'.

Нужно по аналогии дописать пару строк и что ставить вместо 'workid' ума не приложу и не могу сообразить где посмотреть логику добавления именно этой фразы.

Откуда вообще возникает этот параметр в скобках ParamByName(?????) с чем от связан?
Ответить с цитированием
  #2  
Старый 19.12.2011, 13:44
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

"workid" это параметр в запросе, обычно выглядит как "select * from works where word_id=:workid"
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 19.12.2011, 13:47
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

это параметр, который вы передаете в строку запроса.
В самом запросе этот параметр используется примерно так:

Select * From Table where Field=:workid

используется в случаях, когда условия в запросе меняются(например даты)
Ответить с цитированием
  #4  
Старый 19.12.2011, 13:48
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от NumLock
"workid" это параметр в запросе, обычно выглядит как "select * from works where word_id=:workid"
))чуток опаздал
Ответить с цитированием
  #5  
Старый 19.12.2011, 15:34
Lokky Lokky вне форума
Прохожий
 
Регистрация: 19.12.2011
Сообщения: 4
Репутация: 10
По умолчанию

Спасибо за ответы, но это-то я понимаю. что для изменяющихся параметров. Мне надо было узнать где посмотреть этот параметр, уже заданный до меня. Всё оказалось гораздо проще нужно было на форме искать выбрав компонент IBDataSet и открыть его свойство SelectSQL. Там всё тело запроса и лежит.

Но появился ещё один вопрос по запросам.
Код:
begin
	Result := '';
	
	if ((dtFrom_Period.Value <> null) and (dtTo_Period.Value <> null)) then
    Result := Str_SQL_Add(Result, ' and ', '(jo.off_date >= ''' + DateToStr(TDate(dtFrom_Period.Value)) + ''' and jo.off_date <= ''' + DateToStr(TDate(dtTo_Period.Value)) + ''') ');

	if (DBLookupComboboxFW1.KeyValue <> null) and (DBLookupComboboxFW1.KeyValue <> -1) then
    Result := Str_SQL_Add(Result, ' and ', '(jo.providerid = ' + string(DBLookupComboboxFW1.KeyValue) +')');

	if (DBLookupComboboxFW2.KeyValue <> null) and (DBLookupComboboxFW2.KeyValue <> -1) then
    Result := Str_SQL_Add(Result, ' and ', 'left join ha_uchastok_house_table uht on uht.houseid = joa.houseid and ' +  ' uht.uchastok_table_id = ' + string(DBLookupComboboxFW2.KeyValue));

	if (DBLookupComboboxFW3.KeyValue <> null) and (DBLookupComboboxFW3.KeyValue <> -1) then
		Result := Str_SQL_Add(Result, ' and ', '(select ADDRESS_NAME from HA_OBJECT_GET_ADDRESS(joa.houseid)) like '''+ DBLookupComboboxFW3.Text + '%'' ');

	if (DBLookupComboboxFW8.KeyValue <> null) and (DBLookupComboboxFW8.KeyValue <> -1) then
    Result := Str_SQL_Add(Result, ' and ', '(joa.houseid = ' + string(DBLookupComboboxFW8.KeyValue) + ')');

	if (DBNumberEditFW15.Value <> null) and (DBNumberEditFW15.Value <> '') then
    Result := Str_SQL_Add(Result, ' and ', '(joa.flat_num = ' + string(DBNumberEditFW15.Value) + ')');

	if (DBEditFW8.Value <> null) and (DBEditFW8.Value <> '') then
    Result := Str_SQL_Add(Result, ' and ', '(joa.flat_prefix = ' + #39 + DBEditFW8.Value + #39 + ')');

end;

Ругается на поле joa.houseid, нужно подключить таблицу:
ha_journal_outages_address joa, но как не могу понять.

P.s.
Str_SQL_Add(a, b, c: string) :string; - это функция проверки передаваемой переменной Result если передаваемая переменная не пустая, то перед строкой добавляется ' and '

Последний раз редактировалось Lokky, 19.12.2011 в 15:37.
Ответить с цитированием
  #6  
Старый 19.12.2011, 15:48
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Это далеко не весь запрос, это только часть кода по формированию условия отбора и тут нет никаких параметров.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 19.12.2011, 15:50
Lokky Lokky вне форума
Прохожий
 
Регистрация: 19.12.2011
Сообщения: 4
Репутация: 10
По умолчанию

по этому коду вопрос как к нему подключить таблицу, в каком месте?
Ответить с цитированием
  #8  
Старый 19.12.2011, 16:07
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Да ни в каком, ибо вообще не в условии это делается.
Вот эта строчка:
Код:
Result := Str_SQL_Add(Result, ' and ', 'left join ha_uchastok_house_table uht on uht.houseid = joa.houseid and ' +  ' uht.uchastok_table_id = ' + string(DBLookupComboboxFW2.KeyValue));
должна уже по логике вызывать ошибку.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter