Я пытаюсь получить результат запроса от сервера Oracle sql и вставить его в таблицу StringGridShowPapers
.
У меня установлен и работает SQLConnection1
(соединение DBExpress), SQLDataSetPapers
DataSet и запрос SQLQueryPapers
.
Когда я запускаю эту процедуру, кажется, что запрос ничего не возвращает:
procedure TFormOperator.TabSheetShowPapersShow(Sender: TObject);
begin
SQLQueryShowPapers.SQL.Text := 'SELECT * FROM papers';
SQLQueryShowPapers.Open;
SQLQueryShowPapers.First;
if (NOT SQLQueryShowPapers.IsEmpty) then begin
SQLQueryShowPapers.First;
StringGridShowPapers.RowCount := 2;
while (NOT SQLQueryShowPapers.EOF) do begin
if (SQLQueryShowPapers.Fields[2].AsString = Frame11.ID) then begin
with StringGridShowPapers do begin
Cells[0, (StringGridShowPapers.RowCount - 1)] :=
SQLQueryShowPapers.Fields[0].AsString;
Cells[1, (StringGridShowPapers.RowCount - 1)] :=
SQLQueryShowPapers.Fields[1].AsString;
Cells[2, (StringGridShowPapers.RowCount - 1)] :=
SQLQueryShowPapers.Fields[2].AsString;
end;
SQLQueryShowPapers.Next;
StringGridShowPapers.RowCount := StringGridShowPapers.RowCount + 1;
end;
end;
end;
end;
Frame11.ID
содержит строковое значение числа.
Выполнение того же запроса SELECT * FROM papers
в Oracle SQL Developer приводит к ряду строк.
Что могло вызвать проблему?
Заранее спасибо!
Похоже, я нашел решение:
Похоже, что некоторые (глобальные) переменные и свойства в Delphi недоступны или просто очищаются после завершения процедуры, которая их назначает. Таким образом, вам может потребоваться присвоить первое значение формы глобальной переменной второй (в которой вы используете это значение) во время выполнения первой процедуры формы.