AdoQuery question

5 отговора 197 прегледа
#1

AdoQuery question

имам следният въпрос:
свързвам се към дадена база данни и с AdoQuery правя

select * from tbl where x = :MyParameter

Резултатът отива в DBGrid.
MyParameter е от тип String. И ако MyParameter приема няколко стойности, например 'male', 'female', 'unknown' и направя цикъл по тези стойности, които искам всичките да ги има в DBGrid - то ми връща резултата само от последното изпълнение на цикъла, т.е. само когато MyParameter = 'unknown'.
Може би алгоритъмът не е правилен и не трябва да използвам стринг, не знам, вие ще кажете

Отговор
в отговор на legato #2

Re: AdoQuery question

Този въпрос е повече за клуб Бази данни, защото проблемът ти е от заявката, не от AdoQuery.
Първо, каква база е "дадената" база?
Второ, пусни сорс да се види как точно използваш цикъла, че нещо ми е странен този подход.
Иначе, за MySQL например, заявката би изглеждала така:
select * from tbl where x in (male,female,unknown)

Отговор
в отговор на legato #3

Re: AdoQuery question

DBGrid показва визуално съдържанието
на някой наследник на TDataSet
(в твоя случай ТAdoQuery).
Не можеш в цикъл да променяш
query-то, а DBGrida да "натрупва" всичко.
DBGrid НЕ СЕ занимава с данни. Той само
ги показва. И естествено ти е показал
последното отваряне на AdoQuery.
За да имаш всичко трябва да промениш
SQL заявката, така както ти предложи bass:

select * from tbl where x in ('male','female','unknown')

Или ако държиш с параметър, по-глупав вариант, но
просто за пълнота:

select * from tbl
where x = :MyParameter1 or x = :MyParameter2 or x = :MyParameter3

и задаваш и трите параметъра.

Отговор
в отговор на Eмил #4

Re: AdoQuery question

да, прав си, искам да "натрупвам" резултатите от няколко идентични (от една и съща таблица) SQL заявки в DBGrid ... Примера, който дадох може би не беше подходящ, защото параметрите изглеждат, че са фиксиран брой - а какво правим ако не са фиксиран брой - например:

select * from tbl where id = :paramID

като всеки път БРОЯ на параметрите е различен - например: веднъж е 1,2,3 друг път е 5,6,7,78,8,9 ...

Отговор
#5

Re: AdoQuery question

Възхищавам се на търпението ти и изчерпателността на отговора.

Ако организирам курс по програмиране, сериозно ще те поканя за лектор!

Отговор
в отговор на guzun #6

Re: AdoQuery question

Благодаря. Бил съм и лектор.
Даже казваха, че добър.

Отговор