Dynamic & Persistent Fields в TQUERY

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

Dynamic & Persistent Fields в TQUERY

Здравейте..
абе мъчи ме едно проблме4е...
Имам TQUERY с заявка в него - напр.:

'Select ID , NAME from mytable'

това ми генерира двa dynamic Field components (ID u NAME.)

Как мога динамично (runtime) да добавя две (или повече) Persistent fields. ?

По-конктретно въпроса е как може да се добавят Persistant fields, които да произхождат от съществъващите вече DYNAMIC FIELDS (да имат същият тип, размер и атрибути), без е необходимо да затварям и отвярям QUERY-то наново ? (не може да се добавят fields ako QUERY-то e активно, а пък ако заявката е тежка е недопустимо то да се отвая и затвяря няколко пъти...)

Мога ли от по някав начин от dynamic fileds автоматично да направя persistent ? (не мога да добавя персистент колоните преди да екзекютна заявката, защото не знам атрибутите и пропуртитата на колоните ...)

даите идея ... 10х

Отговор
в отговор на ..::X::.. #2

Re: Dynamic & Persistent Fields в TQUERY

Май не разбирам идеята изцяло - и съвета ми е следния - остави вси4ки полета да се генерират динами4но - ако не ти е проблем - ако има нещо да инициализираш по полетата - прави го след отварянето на TQuery - то.
Не разбирам защо то4но ти трябва да добавяш поле ??? - при положение, че ако направиш първото - вси4ки ще се създадат.
Друг вариант е да изпълниш заявката предварително върху минимален брой данни - да си видиш какви то4но са полетата и след това да я отваряш по същество.

---
Е т'ва е живот!
Отговор
в отговор на PhantomAS #3

Re: Dynamic & Persist...

ами да - така с динами4ните полета наистина става най лесно... но проблемът е ,че в резултантният датасет трябва да има полета, които да са Calculated, (или Lookup), или да има нови колони, които ги няма в заявката (наистина, те могат да се добавят като dummy колони в заявката, но не всички заявки за прости като 'select * from neshto_si')
Вече има направени Query-та с такива несъответствия на колони... (има повече колони в SQL-a, otkolkoto в датасета и обратно)).. просто искам да го направя така, че да не се накликват в дизайн тайм чрез Field Editor-a, а да си ги създавам програмно....
и то без да правя по няколко обръщения към базата с една и съща заявка (дори и първо да изпълня заявка ,коиято да не ми върне редове , а само за да взема структирата на колоните....)

маи искам с един куршум да избия всички зайци, а ?

Отговор
в отговор на ..:: X ::.. #4

Re: Dynamic & Persist...

Ами да - това беше за зайцте ;-)))

Зна4и отдавна ме е напуснала идеята за универсална заявка ;-))- т.е. такава която може да прави по4ти вси4ко - ако можеш раздели типовете заявки на групи и създай няколко ТQuery -та за всеки вид. Ина4е не е поблем да си създаваш полета динами4но но мисля, 4е нещата ще загрубеят ;-))) много - и реално ще загубиш.

Има пакети с които динами4но можеш да генерираш SQL заявки - ако наистина търсиш подобна универсалност - по добре да комбинираш някакъв такъв пакет + скрип машина за изпълнение на калкулациите ;-))) -аз се опитвам да направя подобно нещо - ама проблема е 4е трябва да се изпълнява Remote + да може да се конфигурира от дале4е ;-)))

Реално се опитвам да го подкарам с Report Builder-a(report server- a) - ама за сега съм в проект само на идейно тестване. За съжаление резултатите са пла4евни - много бавно - що се отнася до генерирането на справката. Предполагам, 4е и ти се опитваш да си автоматизираш справките - и да имаш един общ на4ин за задаването(примерно един скрипт(+форма) за събиране на входните данни, генериране на SQL и свързване на калкулируемата 4аст) - ама това не винаги се отдава ;-)).

---
Е т'ва е живот!
Отговор
в отговор на ..::X::.. #5

Ei taka stavat neshtata:...

Dokolkoto razbrah, trqbva ti nesto ot sorta:

procedure TForm1.Button2Click(Sender: TOObject);
var
T: TStringField;
begin
Query1.Close;
T := TStringField.Create(Self);
T.FieldName := 'CO_NAME';
T.Name := Query1.Name + T.FieldName;
T.Index := Query1.FieldCount;
T.DataSet := Query1;
Query1.FieldDefs.UpDate;
Query1.Open;
end;


wsi4ko towa RUNTIME.

Cqlata statiq na adres:
[линк]

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

Re: Ei taka stavat neshtata:...

Мдааа - това и аз можех да го кажа - ама човека искаше да не си затваря Query -to ;-))) Не вси4ко е толкова просто колкото ни се иска ;-))

---
Е т'ва е живот!
Отговор