powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запарка с DBGrid'om.
29 сообщений из 29, показаны все 2 страниц
Запарка с DBGrid'om.
    #32244449
SOUND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Ситуация простая, должно быть :)

Есть форма на ней есть DBgrid, TOracleDataSet, TOracleSession.

Для Грида свойство DataSource установалено.

После события (нажатия на кнопку) выполняется следующая процедура:

Код: plaintext
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.
              setAnalysis.sql.add('begin');
                setAnalysis.sql.add('invs.pkg_analiz_invest.get_affeliated_percentage(:report);');
                setAnalysis.sql.add('end;');

                setAnalysis.DeclareVariable('report', otCursor);

                with setAnalysis do begin
                    setAnalysis.Open();
                    setAnalysis.Last;
                    setAnalysis.first;
                while not EOF do begin

               ShowMessage
                (
                        setAnalysis.Fields[ 0 ].AsString + ' | ' +
                        setAnalysis.Fields[ 1 ].AsString + ' | ' +
                        setAnalysis.Fields[ 2 ].AsString + ' | ' +
                        setAnalysis.Fields[ 3 ].AsString + ' | ' +
                        setAnalysis.Fields[ 4 ].AsString
                );

              Next;
             end;
            end;
          end;
  


но Грид не заполняется значениями, ShowMessage отрабатывает раз 30, каждый раз с разными значениями, т.е. в DataSet'e есть записи, которые вернулись после вызова процедуры.

Вопрос: почему не заполняется Грид?

Спасибо за ответы!
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244454
Василий Алибабаевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Грид с датасорсом связан ? проверь
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244465
SOUND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, свойство DataSource для грида установлено.

После запроса в гриде появляется много пустых ячеек,
в это время таже оттображается диалоговое окно (ShowMessage) и после того как я ОК нажму курсор на гриде движется вниз. но значений в гриде нет.
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244469
SOUND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
для Грида я не задавал колонки.

единственное что сделал - это установил свойство DataSource.
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244472
Василий Алибабаевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В гриде сбрось все колонки
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244476
SOUND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Колонок в гриде нет.
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244481
Василий Алибабаевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А процедура курсор возвращает я так понял ....?
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244483
Василий Алибабаевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В датасете явно поля заданы?
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244484
SOUND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, возвращает.

в цикле у меня отображается около 20 окошек(ShowMessage) с разными данными(полями).
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244487
SOUND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет, в ДатаСете поля не заданы.
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244490
Василий Алибабаевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй их задать
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244493
SOUND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
доступных полей нет, при попытке добавить поля.
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244496
Василий Алибабаевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну в рукопашную задай .....
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244523
SOUND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
задал руками, но ничего нового.

Pl/SQL Developer'e процедура отрабатывает, печатает записи исправно.
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244615
SOUND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работает.

Думаю добавление полей играет важную роль!

Спасибо большое!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
        begin
                strDateFrom := FormatDateTime('dd.mm.yyyy', dateFrom.Date);
                setAnalysis.Close();

                setAnalysis.sql.add('begin');
                setAnalysis.sql.add('  invs.pkg_analiz_invest.compose(:passport, to_date(:date, ''dd.mm.yyyy''), 1, 2);');
                setAnalysis.sql.add('  invs.pkg_analiz_invest.get_affeliated_percentage(:report);');
                setAnalysis.sql.add('  invs.pkg_analiz_invest.dispose();');
                setAnalysis.sql.add('end;');

                setAnalysis.DeclareVariable('report', otCursor);

                setAnalysis.DeclareVariable('passport', otString);
                setAnalysis.SetVariable('passport',  41 );

                setAnalysis.DeclareVariable('date', otString);
                setAnalysis.SetVariable('date', strDateFrom);

                setAnalysis.Active := True;

        end;


проуедура отрабатывает первый раз отлично, грид заполняется!
Но при попытке выполнить процедуру второ й раз появляется сообщение об ошибке: 'ORA-06550'
PLS-00103: Encountered the symbol "BEGIN"
....
PLS-00103: Encountered the symbol "end-of-file" when excepting one of the following:

function package pragma procedure form

---------------------------------------------

Есть идеи в чем может быть проблема?
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244630
Александр Б
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вставь setAnalysis.sql.clear; перед setAnalysis.sql.add('begin');
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244652
SOUND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, работает!
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244705
SOUND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще один вопрос :)

чего нужно сделать для того, чтобы грид(ДатаСет) обновлялся?

А то, даты разные подставляю, а он тоже самое выдаёт в Грид!
Хотя точно знаю, что на указанную дату записей нет!
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244761
Василий Алибабаевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DataSet.refresh.

Слушай а ты курсоры ОДАКОМ юзаешь?
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244798
SOUND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто такие ОДАКОМ?
-------------------------------------------------
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
        begin
                setAnalysis.sql.clear;

                setAnalysis.sql.add('begin');
                setAnalysis.sql.add('  invs.pkg_analiz_invest.compose(:passport, to_date(:date, ''dd.mm.yyyy''), 1, 2);');
                setAnalysis.sql.add('  invs.pkg_analiz_invest.get_affeliated_percentage(:report);');
                setAnalysis.sql.add('  invs.pkg_analiz_invest.dispose();');
                setAnalysis.sql.add('end;');

                setAnalysis.DeclareVariable('report', otCursor);

                setAnalysis.DeclareVariable('passport', otString);
                setAnalysis.SetVariable('passport',  41 );

                setAnalysis.DeclareVariable('date', otString);
                setAnalysis.SetVariable('date', strDateFrom);

                setAnalysis.Active := True;

                ShowMessage(strDateFrom + ': ' + IntToStr(setAnalysis.RecordCount));
        end


куда в коде нужно вставить Refresh?

Если вставляю после Актив, то записи количество запсей удваивается. :(
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244815
Василий Алибабаевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотри по логике исполнения:
Dataset.refresh - перегружает датаст из источника.
В твоем случае открытый курсор.


по идее надое его закрыть и открыть занова.
Если ты апдейты делаешь отдельным скриптом (а это скорее всего) то твой курсов работает со своей копией еще необновленного датасета (на мой взгляд).

ODAC - Oracle Direct Access Components
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32244816
Василий Алибабаевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажи исходник invs.pkg_analiz_invest.get_affeliated_percentage
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32245003
DenSoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вообще-то после некоторых мучений работаю с курсорами через ODAC
вот так.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
spAgrList - TOraSQL
q_AgrList - TOraQuery

   with spAgrList do
     begin
       q_AgrList.Close;
       Prepare;
       ParamByName('pDeptISN').AsFloat    := FPsb;
       ...
       ParamByName('pAcc').AsString := 'B';
       Execute;
       q_AgrList.Cursor := ParamByName('vCur').AsCursor;
       UnPrepare;
       q_AgrList.Open;
     end;

В TOraSQL.SQL
begin
  RES_LITE.MySuperMegaPuperProcedure(:VCUR, :PDEPTISN, ... :PACC);
end;

А TOraQuery вообще пустая
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32245010
Василий Алибабаевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты мне серверную часть покажи
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32245025
DenSoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок.
Код: plaintext
PROCEDURE MyKakeeTamSuperMuperPuperProcedure(vCur OUT TCur_AgrJournal, ..., pAcc IN VARCHAR);


Код: plaintext
1.
2.
3.
4.
5.
6.
PROCEDURE MyKakeeTamSuperMuperPuperProcedure(vCur OUT TCur_AgrJournal, ..., pAcc IN VARCHAR)
IS
BEGIN
  OPEN vCur FOR
SELECT
  ...
END;

...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32245036
Василий Алибабаевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делай
dataset.Active:=false;
dataset.Active:=true;
Точно должно сработать
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32245058
Василий Алибабаевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опа ... до того запарился что юзеря спутал ...... предидущий пост свой анулирую
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32245741
SOUND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.
Еще раз спасибо всем кто постил ответы!
Проблема решилась добавлением вызова процедуры Commit.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
        begin
                setAnalysis.Active := False;

                setAnalysis.sql.clear;
                setAnalysis.sql.add('begin');
                setAnalysis.sql.add('  invs.pkg_analiz_invest.compose(:passport, to_date(:date, ''dd.mm.yyyy''), 1, 2);');
                setAnalysis.sql.add('  invs.pkg_analiz_invest.get_affeliated_percentage(:report);');
                setAnalysis.sql.add('  invs.pkg_analiz_invest.dispose();');
                setAnalysis.sql.add('end;');

                setAnalysis.DeclareVariable('report', otCursor);

                setAnalysis.DeclareVariable('passport', otString);
                setAnalysis.SetVariable('passport',  41  {DM.portfoilio_id});

                setAnalysis.DeclareVariable('date', otString);
                setAnalysis.SetVariable('date', strDateFrom);

                setAnalysis.Active := True;
                setAnalysis.Session.Commit;
        end;


Так как процедура выбирала данные во временную таблицу...ну вообщем дальше Вы сами знаете :-) без Commit'a никуда!
...
Рейтинг: 0 / 0
Запарка с DBGrid'om.
    #32245899
Василий Алибабаевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати Commit не объясняет дублирование если честно
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запарка с DBGrid'om.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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