La fel ca în cererea de proiectare

La fel ca în cererea de proiectare
Bună ziua tuturor, astăzi ne uităm la lecții învățate din baza de date, și, în special, ne vom uita la modul de a face un prompt pentru utilizatorul care introduce datele, de exemplu, pentru a căuta. Această caracteristică poate fi văzut în multe programe, precum și pe multe site-uri, cum ar fi Facebook. atunci când există o căutare umană, o listă drop-down, unde puteți găsi o coincidență similară care facilitează introducerea datelor pentru utilizator, această caracteristică, vom încerca și Delphi, de exemplu, MS Access Baze de date, doar un pic într-o formă simplă. Dar este de asemenea potrivit pentru alte baze de date care pot fi utilizate în Delphi. Ne-am uitat deja la o mulțime de exemple pentru a găsi datele, în acest caz, vom folosi SQL construiește LIKE. care mai devreme am considerat și folosit, de asemenea. Un exemplu al acestei construcții este descrisă mai jos:

După cum sa văzut mai sus, design-ul simplu LIKE pentru modelul de potrivire de date, trebuie să specificați un parametru de intrare pentru ea.

Și acum exemplu și sarcinile noastre. Pentru a începe, să creeze unele baze de date vMSAccess. nu va fi prea simplu lucruri, poți face singur, și nu doar un comprimat, suna-l Goroda. în ea, am creat următoarele domenii:

Acum avem nevoie de un pic pentru a umple placa noastră, nu de mult, am adăugat la numai 5 intrări:

La fel ca în cererea de proiectare

Însăși structura tabelului, puteți vedea mai jos:


Du-te mai departe, de exemplu, a crea un proiect în Delphi. Așezați următoarele componente pe forma:

Proprietatea Caption TLabel componenta write - "The City." Următoarea componentă alocă TAdoConnection. în proprietatea sa connectionString Specifică furnizorul de date - în acest caz MicrosoftJet 4.0OLEDBProvider. Mai departe la următoarea conectare (filă), care arată calea spre baza noastră de date (puteți specifica calea completă la baza de date, dar în cazul în care se află în folderul curent cu proiectul, specifica doar numele complet al bazelor noastre de date cu extensia, în acest caz, * mdb). Faceți clic pe OK și treceți la proprietatea Mode. care este ales din lista derulantă cmShareDenyNone. Deși puteți alege pur și simplu pentru a citi cmShareDenyRead. Ei bine LoginPromt proprietate este setată la False (nu permit să se deducă o fereastră pentru a solicita numele de utilizator și o parolă, care permite accesul la baza de date), cu excepția cazului în baza de date nu este setată o parolă, în caz contrar va trebui să introduceți un nume de utilizator și o parolă, puteți este scopul nostru de a se conecta la în mod constant să nu introducă unul și aceleași date. Am o parolă pe baza de date nu este setat, astfel încât este setat la False. În cele din urmă, avem nevoie pentru a activa conexiunea la baza noastră de date, acest set proprietatea Conectat la False.

Acum vom merge la configurarea componentei noastre TADOQuery. Selectați TADOQuery componenta noastră și în TADOConnection Connection proprietate specifica numele componentei. în cazul meu AdoConnection1. În continuare, avem nevoie de o altă proprietate componentă TADOQuery - l parametri. Deschide-l și adăugați un nou parametru (numele), am numit - gorods. el tipul de date (DataType) Arătăm - ftString toate închide fereastra noastră. Imediat activa ancheta noastră nu este necesară, pentru că în ea nu am înregistrat nici un constructe SQL, și, de fapt, nu va reuși. Vedere generală a ferestrei proiectului meu sa dovedit următoarele:

Acum trecem la scrierea de cod.

Selectați tEditează noastre componente și mutați-l la lista de evenimente, vom găsi acolo onkeyup eveniment și faceți clic dublu-click pentru a deschide o fereastră a codului de program pentru acest eveniment. De ce, pentru că este mai potrivit pentru noi în sine, apare acest eveniment, este generat după ce utilizatorul a intrat într-un alt simbol al orașului și eliberează deja butonul, de asemenea, în cazul există un argument cheie. care stochează un cod numeric al tastei apăsate.

Acum trece la scrierea de cod, vom deschide din nou evenimentul nostru și scrie următorul cod:

Acum să analizăm în detaliu codul nostru. Variabila pos. trebuie să ne amintim poziția de intrare curentă. Apoi, în starea ne ține toate codurile-cheie care sunt mai puțin de 47.

Cu ClearSelection am deselecta în componenta tEditează. Apoi am scrie -interogare nostru SQL, în care există LIKE de construcție. și în ea am arătat în stabilirea cu condiția gorods noastre. Deja linia de jos ne-am stabilit parametrii noștri de la tEditează. pentru a începe eliminarea oricăror lacune care pot fi mai departe, iar istoricul nostru adaugă complet caracterul%, ceea ce face clar că solicitarea după ce un utilizator a intrat cuvânt poate merge complet orice caractere.

În final totul este simplu, vom atribui tEditează. ceea ce se găsește în baza de date (dacă găsiți un curs), și selectați caracterele de cuvinte pe care este posibil, iar utilizatorul caută, dacă nu găsiți nimic, apoi publicați doar un semnal sonor. Asta am venit cu privire la:

În ceea ce privește acest exemplu, este avantajul său principal este că nu numai că este orașul care corespunde modelului LIKE. dar, de asemenea, ajută utilizatorul pentru a termina introducerea, punând numele orașului cel mai potrivit.

Prin urmare, utilizarea în proiectele lor tocmai această structură de căutare pentru a facilita utilizatorului pentru a lucra în programul tău. Am posta, de asemenea, articolele sursă care pot fi descărcate de aici. Codul sursă a fost verificată în IDE - Delphi 7.

înregistrări similare

Aici, de altfel, o întrebare.
Când efectuați o căutare în ComboBox (partea 2), care este una dintre alternativele (vizibile la prima vedere)
- Adăugați ORDER BY Gorod, la culcat în listă pentru a arăta orașul în ordine alfabetică;
- să păstreze statistici (dinamică, statică) pentru utilizatorii din zonele urbane, apoi să organizeze „sfaturi“ orașe în funcție de popularitatea lor;

Oricum - mult noroc!

Da, ceva de genul acesta și planul de a organiza

desen
ADOQuery1.Active:=True;
cu ADOQuery1 do
începe
dacă este activ atunci
Închide;
Deschideți;
.
Pentru ce se face? La urma urmei, în Deschideți apare doar activă: = Adevărat. Se pare că la început vă deschideți, apoi verificați dacă kveri activă, în cazul în care acest lucru, apoi închideți și apoi deschideți din nou. Dar, cu un astfel de cod, kveri întotdeauna înainte de verificare va fi deschis. Explicați de ce acest lucru se face?
ZY Apropo, poate doriți să ia o pauză între ultima intrare de caractere și datele de căutare. pentru că în cazul în care datele din baza de date va fi mult, acesta va fi o frână care nu poate ca după fiecare utilizator de caractere de intrare. Pauză la o jumătate de secundă este acceptabilă (în cazul în care utilizatorul introduce rapid textul)

De multe ori completarea cuvântul de intrare a făcut - a încercat o mulțime de opțiuni. Deci, cea mai optimă - inițializa cronometrul de căutare. Ie utilizatorul apasă butonul - temporizatorul este pornit (de exemplu, 500 ms), dacă este apăsat încă o dată - numărătoarea inversă începe din nou. Potrivit timer-ul - executarea cererii.
Ei bine, în general, în cazul în care directorul nu este mare - este mai ușor zafetchit totul în caseta combo, și așa că va fi completă fără inventarea bicicletei. Aici, la mese mari - ai subminat

Buna ziua, te rog ajută-mă, am dat peste aceasta pagina pe rețea, vă mulțumesc pentru o astfel de explicație la toate, dar am o problemă:
Am un B / D, 2 tabele nu sunt legate.
Sheets au fost conectate prin intermediul componentelor ADOQUERY, ADOCONNECTION, DBGRID, DATASOURCE.
iar aceste 2 tabele, vă rugăm să-mi spuneți cum să le lega împreună. Este posibil acest lucru fără ADOTABLE.
și am nevoie să din tabelul №2 de pe linia selectată a tăiat și lipit în tablitsu№1 de înregistrare. în cazul în care punerea în aplicare a unui astfel de cod este posibil cu o astfel de construcție.

Andrew, ești site-ul atât de util. Vă mulțumesc pentru asta. Am o întrebare. Când programarea pe Delphi, folosesc tabelele bazei de date Paradox, iar rezultatul nu a fost foarte fericit. Uneori, datele din tabel nu sunt înregistrate deloc. Și în cazul în care pentru a crea tabelele bazei de date v-ar sfătui? Mulțumesc.

Buna ziua, as folosi orice bază de date gratuit, MySQL - bun, MS Access este de asemenea bun, dar trebuie să cumpere, eu, de asemenea, ca Firebird MS SQL numărul general, excelent este un SGBD bun atât plătit și gratuit, caută ceea ce va fi goluri pentru a utiliza

Andrei, Buna ziua. Am eroare de sintaxă într-un fel în acea linie: ADOQuery1.SQL.Add ( 'SELECT * FROM FIO tbFamilii UNDE FIO LIKE: FAMILIA');
Din ceea ce poate fi?

articole similare