Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

что-то не могу обратится к полю...беда...что-то не так? [D6, MSSQL]


Nikolai ©   (2003-10-03 10:52:00) 

Внизу не хитрый код. На MS SQL 7 есть процедура, которая возвращает в Delphi6 курсор с одной записью. Если подключить визуальный компонент - все видно, все хорошо. А вот без него обратиться к полю "myfield" не выходит. Компилятор предупреждает, что значение переменной, после попытки присвоить ей значение поля "myfield", не доступно, хотя явных ошибок он не находит. Что-то не так написал? Прошу помощи.

cSQL := "execute myproc";
qSel := TQuery.Create(nil);
try
with qSel do begin
DatabaseName := "DB";
Close;
SQL.Clear;
SQL.Add(cSQL);
Open;
iM := FieldByName("myfield").asInteger;
Close;
Free;
end;
except
on E: Exception do begin
ShowMessage(E.Message);
qSel.Free;
end;
end;


sniknik   (2003-10-04 19:02:00) [1]

Johnmen © (03.10.03 11:05) [1]
> 2. Возможно, правильнее писать SELECT * FROM myproc

Bhagavad (04.10.03 18:44) [6]
> execute - ничего не возвращает.
> select myfield from ()

да не все правильно для MSSQL все возвращает (если внутри процедуры конечно есь select) можно даже exec опустить все правильно будет, это вы начерное с IB путаете, там к процедуре без параметров как в View можно обращатся через селект в MSSQL такое обращение наоборот даст ошибку.

Nikolai © (03.10.03 10:52)
см. Johnmen © (03.10.03 11:05) [1] пункт 1.
& ЮЮ © (04.10.03 04:21) [5]
скорее всего дело именно в оптимизаторе.


Bhagavad   (2003-10-04 18:44:00) [2]

execute - ничего не возвращает.
select myfield from <имя процедуры>(<параметры>)


ЮЮ   (2003-10-04 04:21:00) [3]

>iM - локальная, висит на кнопке

Это как? Вот и повесь:
iM :=FieldByName("myfield").asInteger;
Button.tag := iM;
Button.Caption :=IntToStr( iM);

Иначе см.[1]:


Nikolai   (2003-10-03 14:57:00) [4]

iM - локальная, висит на кнопке, это максимальное значение поля


Rem   (2003-10-03 11:51:00) [5]

1. Какая область видимости переменной iM?
2. Для чего она потом используется?


MsGuns   (2003-10-03 11:35:00) [6]

А зачем Close для только что созданного и, след-но, не открытого TQuery ? Хотя на ошибку это не влияет, конечно ;)


Johnmen   (2003-10-03 11:05:00) [7]

1. Компилятор выкидывает переменную iM как неиспользуемую.
2. Возможно, правильнее писать SELECT * FROM myproc


Наверх

Титульная страница Поиск, карта сайта Написать письмо