Conferințe vbstreets - vizualizați subiectul - acces ms - cum să specificați - în ce câmp să efectuați o căutare

Alo
Este necesar să efectuați o căutare a formei căutării de date în baza de date prin primele litere ale numelui / nume / patronimic. Pentru aceasta, există 3 butoane radio, care sunt alese - unde să se uite - în "Nume", "Prenume", "Patronimic", câmpul pentru introducerea fragmentului dorit și butonul "Găsiți următorul". Am gasit functii FindRecord si FindNext, dar pentru a cauta in campuri specifice, mai degraba decat in toate, trebuie sa select acest camp. Cum se face acest lucru? În FindRecord, puteți specifica căutarea numai în câmpul curent, dar cum să îl actualizați?







Utilizați metoda de căutare a înregistrării, nu formularul.

Lasciate ogni speranza, voi ch'entrate.

Se pare că va trebui să folosesc FindFirst, nu FindRecord, deoarece ultimul este legat de controlul care a fost focalizat.

Utilizați metoda de căutare a înregistrării, nu formularul.


RecordSet.Find? Voi încerca, îți voi spune rezultatele.

Cod: Selectați toate dimensiunile
Dim strCriteria ca șir

strCriteria = "# 91; Prenume # 93; = 'Sf. Gheorghe' '
Set rst = CurrentDb.OpenRecordset ( "admitere și de descărcare de gestiune"). „pacienți
rst.Find strCriteria
spune "Neconcordanța de tip" pe a doua linie.

Deci, pe FindFirst jura sau pe Find?

Și interogarea este corect scrisă ca: "SELECT Nume, Prenume FROM [Intrare și Extras]"
Și pentru viitor. Apelarea obiectelor în baza de date MS Access în limba rusă și cu spații este o formă proastă. Dar când este chemat, atunci în interogări, luați numele în paranteze pătrate.

sleepouse a scris: și ceea ce este rău este căutarea standard pentru un accesoriu? <.>


Este minunat, dar poate fi necesar să căutați în programul dvs. fără intervenția utilizatorului. Sau ar putea fi necesar să faceți un dialog de căutare în mai multe domenii (am avut un milion de ori). Sau chiar un exemplu clasic este de a căuta o înregistrare în forma curentă prin valoarea unui control - combobox sau cutie de text.

Îmi cer scuze că am tăcut atât de mult, am decis să o amâne. Amânat (ouă) căutarea, dar tot aceeași problemă cu RecordSet'om:

Cod: Selectați toate Private Sub Button1_Click ()
Dim RS ca Recordset






Dimensiuni ca câmp
Dim N ca întreg
Setați RS = CurrentDb.OpenRecordset ("# 91; Primirea și declarația # 93;")
Setați câmpul = RS! # 91; Declarația # 93;
Până la RS.EOF
N = N + 1
RS.MoveNext
buclă
End Sub
El scrie:

Eroare de execuție "3078":
motor de baze de date Microsoft Jet nu poate găsi tabelul de intrare sau de interogare „[admisie și de descărcare de gestiune]“. Verificați dacă numele este corect.


Verificat și scris. Dacă eliminați cotații, scrieți:

Eroare de execuție "2465":
Aplicația "Microsoft Access" nu poate găsi câmpul "|" specificat în expresie.


Fără paranteze pătrate scriu, de asemenea, ceva, dar tocmai nu l-am scris rău.

Cred că problema este în ANSI și UNICODE. Când am copiat macroul într-un notebook, literele verticale au apărut pe locul scrisorilor rusești. Înlocuirea numelui tabelului cu caractere latine nu a schimbat nimic.

Dim prima ca DAO.Recordset

ca opțiune utilizând căutarea încorporată cu dialogul standard (Ctrl + F). este prietenos cu utilizatorul.


Numai acolo nu poți alege - în ce domeniu să te uiți.

AndreyMust19 a scris: Cod: Selectați toate Set RS = CurrentDb.OpenRecordset ("# 91; Primirea și declarația # 93;")


trebuie să scrieți expresia completă în sintaxa SQL. și un câmp dintr-o masă necunoscută - aceasta, ca niște pietre, pe satul bunicului.

AndreyMust19 a scris (scris): dormouse

ca opțiune utilizând căutarea încorporată cu dialogul standard (Ctrl + F). este prietenos cu utilizatorul.


Numai acolo nu poți alege - în ce domeniu să te uiți.

Am scris acolo că, înainte de a apela dialogul de căutare, trebuie să executați comanda Field.SetFocus. Dialogul este configurat pentru a căuta în câmpul curent

trebuie să scrieți expresia completă în sintaxa SQL. și un câmp al unui tabel necunoscut - e ca granulatie pe sat la bunicul.

trebuie să executați comanda Field.SetFocus.


Asta deoarece caută printre controalele, dar nu și în baza de date - am deja probyval. Prin urmare, Căutarea va căuta numai în înregistrarea curentă.

Codul piesei: Selectați toate dimensiunile ca DAO.Recordset
încercați mai întâi, apoi obiect, referindu-vă la exemple.

Salut din nou.
În cele din urmă, problema a fost rezolvată. Îngăduind acest acces la tot ce i-am scris și nu este clar - unde exact eroarea. Deci, eroarea nu este acolo unde mă uit. A fost necesar să conectați componenta Microsoft DAO în "Tools-> Links" și să folosiți tipul DAO.Recordset. În cele din urmă totul sa dovedit! Din toate VB și VBA, aceasta sa dovedit a fi cea mai dificilă pentru mine. Mulțumesc tuturor pentru sfat, când finalizez baza de date, voi pune aici cele mai interesante dintre ele, astfel încât alții să nu fure și să găsească în căutare ceea ce căutau.
Despre antrenamentul în care ai dreptate - mai întâi trebuie să înveți să ții steaua înainte să taie lemnul. Dar dacă trebuie să taie un copac, aș prefera să-l taie cumva mai mult de câteva zile pentru a învăța să taie copaci atunci când o taie în doar 20 de minute. A fost necesar să se înțeleagă numai - în ceea ce a existat o greșeală în MS Access, fără a căuta detalii.







Trimiteți-le prietenilor: