![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как обновить данные в DBGrid
FIL-23 © (2012-10-26 19:55:00)Сначало код.
//******************************************************************************
//******************************************************************************
function select_STREET(ID_DISTRICT:integer):TIBQuery;
begin
with form1 do
begin
IBQuery1.Active := False;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add ('select '
+ 'STREET.ID,'
+ 'STREET.NAME_ '
+ 'from DISTRICT inner join STREET ON DISTRICT.ID = STREET.ID_DISTRICT '
+ 'where DISTRICT.ID= ' + '''' + inttostr(ID_DISTRICT) + '''');
// IBQuery2.SQL.Add('ORDER BY ID ASC') ;
IBQuery1.Active := true;
select_STREET:=IBQuery1;
end;
end;
//******************************************************************************
//******************************************************************************
потом где используется эта функция
procedure see_date_fm_STREET_data_7;
var
ID_: integer;
begin
with fm_STREET_data_7 do
begin
ID_ := find_ID_by_PARAM_in_OTHER_TABLE(trim(ComboBox2.Text), 'NAME_','DISTRICT');
IBQuery1:=select_STREET(ID_);
end;
end;
И получается что данные в DBGrid не поступают.
Есть какое либо обновление записей в DBGrid?
Кщд (2012-11-04 12:05:00) [1]Дорогой ТС:
1. смысла в ф-ции нет;
2. используйте параметры;
3. в данном запросе нет нужды присоединять таблицу district;
4. угадывают сообщения об ошибках на другом форуме;
Очень злой (2012-11-04 09:36:00) [2]
> Проблем была в том, что в процедура шла работа с "другим"
> query не связанным с нужным DBGrid поэтому было найдено
> решение передавать объект query в функцию, а потом возращать
> измененым. Ну это все образно сказано но смысл надеюсь понятен.
>
> кодик для понимания.
>
> //******************************************************************************
> //******************************************************************************
> function select_STREET(ID_DISTRICT:integer;my_IBQuery:TIBQuery):
> TIBQuery;
>
> begin
> // with form1 do
> begin
> my_IBQuery.Active := False;
> my_IBQuery.SQL.Clear;
> my_IBQuery.SQL.Add ('select '
> + 'STREET.ID,'
> + 'STREET.NAME_ '
> + 'from DISTRICT inner join STREET ON DISTRICT.ID = STREET.
> ID_DISTRICT '
> + 'where DISTRICT.ID= ' + '''' + inttostr(ID_DISTRICT)
> + '''');
> // IBQuery2.SQL.Add('ORDER BY ID ASC') ;
> my_IBQuery.Active := true;
> select_STREET:=my_IBQuery;
> end;
> end;
Что-то я не понимаю какой вообще смысл возвращаемого значения функции, если оно равно одному из аргументов?
Anatoly Podgoretsky (2012-10-27 05:33:00) [3]> FIL-23 (26.10.2012 20:41:02) [2]
Неужели так и пишет – выдаю ошибку?
Ghost del vonte (2012-10-26 22:55:00) [4]Ответов потому и не было, все и так знали что сам найдешь решение...
форум и правда хороший:)
FIL-23 (2012-10-26 21:03:00) [5]все нашел ошибку и нашел решение.
Проблем была в том, что в процедура шла работа с "другим"queryне связанным с нужнымDBGridпоэтому было найдено решение передавать объектqueryв функцию, а потом возращать измененым. Ну это все образно сказано но смысл надеюсь понятен.
кодик для понимания.
//******************************************************************************
//******************************************************************************
function select_STREET(ID_DISTRICT:integer;my_IBQuery:TIBQuery):TIBQuery;
begin
// with form1 do
begin
my_IBQuery.Active := False;
my_IBQuery.SQL.Clear;
my_IBQuery.SQL.Add ('select '
+ 'STREET.ID,'
+ 'STREET.NAME_ '
+ 'from DISTRICT inner join STREET ON DISTRICT.ID = STREET.ID_DISTRICT '
+ 'where DISTRICT.ID= ' + '''' + inttostr(ID_DISTRICT) + '''');
// IBQuery2.SQL.Add('ORDER BY ID ASC') ;
my_IBQuery.Active := true;
select_STREET:=my_IBQuery;
end;
end;
//******************************************************************************
//******************************************************************************
procedure see_date_fm_STREET_data_7;
var
ID_: integer;
FG:TIBQuery;
begin
with fm_STREET_data_7 do
begin
ID_ := find_ID_by_PARAM_in_OTHER_TABLE(trim(ComboBox2.Text), 'NAME_','DISTRICT');
IBQuery1:= select_STREET(ID_,IBQuery1)
end;
end;
хороший форум , сам задал вопрос , сам на него ответил себе :)
FIL-23 (2012-10-26 20:41:00) [6]ошибку нашел, ошибка в том что
function select_STREET(ID_DISTRICT:integer):TIBQuery;не связана с визуальными компонентами.
Поэтому родилась новая проблема , как передать IBQuery в качестве параметра в функцию. пробую так
procedure select_STREET_444(MIBQuery: TIBQuery);
select_STREET_444(IBQuery1)
выдает ошибку .
Т.е. вопрос . как передать компоненту (параметры компоненты) в процедуру/функцию
FIL-23 (2012-10-26 19:57:00) [7]Уточню , SQL запрос проходит, и данные изменяются , но визуально остается все старые данные, т.е. в DBGrid ни чего не происходит хотя IBQuery уже совсем другой и с другими параметрами