Коришћење Делпхи упита са АДО-ом

ТАДОКуери компонента пружа Делпхи програмерима могућност дохваћања података из једне или више табела из ан АДО база података користећи СКЛ.

Ове СКЛ изјаве могу бити ДДЛ (Језик дефиниције података) изјаве попут ЦРЕАТЕ ТАБЛЕ, АЛТЕР ИНДЕКС и слично, или то могу бити ДМЛ (језик управљања подацима), као што су СЕЛЕЦТ, УПДАТЕ и ДЕЛЕТЕ. Међутим, најчешћа изјава је ставка СЕЛЕЦТ, која ствара поглед сличан ономе који је доступан користећи компоненту Табеле.

Напомена: иако је извршење наредби помоћу компоненте АДОКуери могуће, АДОЦоммандкомпонента је за ову сврху погоднија. Најчешће се користи за извршавање ДДЛ наредби или за извршавање похрањене процедуре (иако би требало да користитеТАДОСторедПроц за такве задатке) који не враћа скуп резултата.

СКЛ који се користи у компоненти АДОКуери мора бити прихватљив за АДО погонитељ који се користи. Другим речима, требали бисте бити упознати са разликама у писању СКЛ-а између, на пример, МС Аццесс-а и МС СКЛ-а.

Као и приликом рада са компонентом АДОТабле, подацима у бази података приступа се употребом везе за складиштење података коју је успоставила компонента АДОКуери користећи свој

instagram viewer
ЦоннецтионСтринг својство или преко посебне компоненте АДОЦоннецтион наведене у Везасвојство.

Да бисте направили Делпхи образац који може да преузме податке из Аццесс базе података помоћу компоненте АДОКуери, једноставно испустите све повезане компоненте за приступ подацима и свјесне података на њима и чине везу као што је описано у претходним поглављима овог наравно. Потребне су компоненте за приступ подацима: ДатаСоурце, АДОЦоннецтион заједно са АДОКуери (уместо АДОТабле) и једном компонентом која разуме податке као што је ДБГрид.
Као што је већ објашњено, помоћу Објецт Инспецтор поставите везу између тих компоненти на следећи начин:

ДБГрид1.ДатаСоурце = ДатаСоурце1
ДатаСоурце1.ДатаСет = АДОКуери1
АДОКуери1.Цоннецтион = АДОЦоннецтион1
// изградити ЦоннецтионСтринг
АДОЦоннецтион1.ЦоннецтионСтринг = ...
АДОЦоннецтион1.ЛогинПромпт = Нетачно

Обављам СКЛ упит

ТАДОКуери компонента нема а ТаблеНамесвојине као што то чини ТАДОТабле. ТАДОКуери се зове својство (ТСтрингс) СКЛ која се користи за чување СКЛ израза. Вриједност СКЛ својства можете поставити с Објецт Инспецтор-ом у вријеме дизајнирања или путем кода у вријеме извођења.

У време пројектовања, призовите уређивач својстава за СКЛ својство кликом на дугме елипса у Објецт Инспецтору. Упишите сљедећу СКЛ изјаву: "СЕЛЕЦТ * ФРОМ Аутхорс".

СКЛ изјава може се извршити на два начина, у зависности од типа изјаве. Изјаве језика дефиниције података се углавном изводе са ЕкецСКЛ метод. На примјер, за брисање одређеног записа из одређене таблице можете написати ДЕЛЕТЕ ДДЛ изјаву и покренути упит методом ЕкецСКЛ.
(Обични) СКЛ изрази се извршавају постављањем ТАДОКуери. Активно власништво Истинито или позивом наОтвори метода (битно исто). Овај приступ је сличан преузимању података из табеле са ТАДОТабле компонентом.

У току извођења, СКЛ изјава у СКЛ својству може се користити као било који СтрингЛист објект:

са АДОКуери1 започети Цлосе; 
СКЛ.Цлеар;
СКЛ.Адд: = 'ИЗБОР * ОД аутора' СКЛ.Адд: = 'НАРУЧИТЕ ПО ауторском имену ДЕСЦ' Отвори;
крај;

Горе наведени код, у току извођења, затвара скуп података, празни СКЛ низ у СКЛ својству, додељује нову СКЛ наредбу и активира скуп података позивом Отворене методе.

Имајте на уму да креирање упорне листе теренских објеката за компоненту АДОКуери нема смисла. Следећи пут када отворите методу Опен, СКЛ може бити толико различит да се може променити цео низ пријављених имена (и врста). Наравно, то није случај ако користимо АДОКуери да узмемо редове из само једне табеле са константним сетом поља - а резултирајући скуп зависи од ГДЈЕ дела СКЛ израза.

Динамички упити

Једно од сјајних својстава ТАДОКуери компоненти је Парамс својство. Параметризирани упит је онај који допушта флексибилан одабир редака / ступаца користећи параметар ВХЕРЕ клаузуле СКЛ израза. Својство Парамс омогућава замјењиве параметре у унапријед дефинираном СКЛ изразу. Параметар је резервирано мјесто за вриједност у клаузули ВХЕРЕ, дефинирану прије отварања упита. Да бисте у упиту одредили параметар, користите двоточку (:) испред назива параметра.
За време пројектовања користите Објецт Инспецтор да бисте поставили СКЛ својство на следећи начин:

АДОКуери1.СКЛ: = 'ИЗБОР * ИЗ ПРИМЕНА ГДЈЕ тип =: апптипе'

Када затворите прозор СКЛ уређивача отворите прозор Параметерс кликом на дугме елипса у Објецт Инспецтор.

Параметар у претходној СКЛ изјави је именованапетит. Вредности параметара у колекцији Парамс можемо подесити у време пројектовања преко дијалошког оквира Параметерс, али већину времена ћемо мењати параметре током извођења. Дијалог параметара може се користити за одређивање врста података и заданих вредности параметара који се користе у упиту.

У току рада, параметри се могу мењати и упит се поново извршава ради освежавања података. Да бисте извршили параметризирани упит, потребно је унијети вриједност за сваки параметар прије извршења упита. За измјену вриједности параметра користимо или својство Парамс или ПарамБиНаме методу. На пример, с обзиром на СКЛ израз као што је горе, у току извођења можемо користити следећи код:

са АДОКуери1 почињу
Близу;
СКЛ.Цлеар;
СКЛ.Адд ('СЕЛЕЦТ * ФРОМ Апплицатионс ВХЕРЕ типе =: апптипе');
ПарамБиНаме ('апптипе') Вредност: = 'мултимедија';
Отворено;
крај;

Као кад радите са компонентом АДОТабле, АДОКуери враћа скуп или записе из табеле (или две или више). Кретање по скупу података врши се истим сетом метода које су описане у поглављу „Иза података у скуповима података“.

Кретање и уређивање упита

Опћенито, компонента АДОКуери се не смије користити када се уређује. Упити засновани на СКЛ-у углавном се користе у сврху извештавања. Ако ваш упит врати скуп резултата, понекад је могуће уредити враћени скуп података. Скуп резултата мора садржавати записе из једне таблице и не смије користити никакве СКЛ функције обједињавања. Уређивање скупа података који је вратио АДОКуери исто је као уређивање скупа података АДОТАбле.

Пример

Да бисмо видели неку акцију АДОКуери, наводимо мали пример. Направимо упит који се може користити за дохватање редака из различитих табела у бази података. Да би приказали листу свих табела у бази података које можемо користити ГетТаблеНамесметода АДОЦоннецтион саставни део. ГетТаблеНамес у ОнЦреате догађају обрасца испуњава ЦомбоБок именима табела, а дугме се користи да затвори упит и да га поново креирају како би преузели записе из одабране табеле. Руковаоци догађаја () треба да изгледају:

процедура ТФорм1.ФормЦреате (пошиљалац: ТОбјецт);
започети
АДОЦоннецтион1.ГетТаблеНамес (ЦомбоБок1.Итемс);
крај;
процедура ТФорм1.Буттон1Цлицк (пошиљалац: ТОбјецт);
вар тблнаме: стринг;
започети
ако ЦомбоБок1.ИтемИндек тада изађи;
тблнаме: = ЦомбоБок1.Итемс [ЦомбоБок1.ИтемИндек];
са АДОКуери1 почињу
Близу;
СКЛ.Тект: = 'СЕЛЕЦТ * ФРОМ' + тблнаме;
Отворено;
крај;
крај;

Имајте на уму да се све ово може учинити коришћењем АДОТабле и својства ТаблеНаме.