cum fac o cautare in baza de date folosind vb 6
Last Updated: Aug 12 2006 07:11, Started by
jumbo
, Jul 18 2006 23:42
·
0

#1
Posted 18 July 2006 - 23:42

Salutare.
Am si eu o problema(care poate parea stupida): Am un programel care foloseste o baza de date si vreau ca in urma cautarii prin baza de date sa-mi afiseze ceea ce caut intr-o caseta text,sau un mesaj ca nu a gasit nimic. ![]() |
#2
Posted 19 July 2006 - 15:38

pune si u din cod aici ca sa primesti un exemplu pe programul tau.
In principiu va trebui sa folosesti tot o interogare sql : dim rs as recordset rs.open "select * from NumeTabela where Coloana = 'unString'"' 'poti folosi si wildcard-uri (*,? ...) 'Apoi parcurgi recordset`ul : rs.movefirst for i = 0 to rs.recordcount list1.additem rs("Coloana") rs.movenext next iUite aici tutoriale si cu alte metode : http://www.devdos.com/vb/lesson4.shtml |
#3
Posted 19 July 2006 - 22:57

multumesc B3aT
pune si u din cod aici ca sa primesti un exemplu pe programul tau. In principiu va trebui sa folosesti tot o interogare sql : dim rs as recordset rs.open "select * from NumeTabela where Coloana = 'unString'"' 'poti folosi si wildcard-uri (*,? ...) 'Apoi parcurgi recordset`ul : rs.movefirst for i = 0 to rs.recordcount list1.additem rs("Coloana") rs.movenext next iUite aici tutoriale si cu alte metode : http://www.devdos.com/vb/lesson4.shtml |
#4
Posted 20 July 2006 - 21:59

Salutare,
Am o problema de rezolvat si nu stiu cum sa incep ... Am nevoie de ajutor, (o idee, un link, un cod) Trebuie sa fac o cautare putin avansata intr-o baza de date acces unde sunt adaugate manual numere de telefon si nume... Se mai da o lista .doc sau .txt care trebuie comparata cu cea actuala... Ma intereseaza daca in cea noua sunt asemanari ca in baza de date, un search avansat ... Ar mai fi si problema, daca in baza de date exista 0254.XXXXXX si in lista noua .doc 0254-XXXXXX .....sau 0254 XXXXXXX sau 0254 XXX XXX XXX, se mai face cautarea ??? mai da rezultate ? Ideea e simpla sa nu fie in lista noua ce e deja in lista veche ...ma puteti ajuta cumva ? |
#5
Posted 11 August 2006 - 19:20

ryady, ai 2 posibilitati: Una e sa verifici dupa introducere: sa compari tabelul nou , cu acel vechi. Poti face ca in exemplul precedent, iterind fiecare inscriere
Dim rs as Recordset Dim rs1 as Recordset rs1.Open "select * from NumeTabelaNoua" rs.Open "select * from NumeTabelaVeche" rs.MoveFirst for i = 0 to rs.RecordCount - 1 rs1.MoveFirst While not rs1.Eof ' Aici poti pune in conditii coloanele care nu trebuie sa coincida If rs!coloana1 = rs1!colana1 AND rs!colana2 = rs1!coloana2 Then rs1.Delete ' Daca a gasit valori care coincid , sterge din tabelul nou inscrierea EndIf rs1.MoveNext Wend rs.MoveNext Next iCu valorile de genul 0254 XXX XXX XXX si 0254-XXXXXXXXX poti sa le desparti (pe XXXXXXXXX), sau sa le combini (pe XXX XXX XXX) ca prelucrarea lor sa fie mai usoara. A 2.a metoda este mai eficienta, sa verifici la introducere. Deoarece dupa introducere se stringe o gramada de informatie, dupa care va trebui sa o aranjezi, si daca vor fi greseli in introducere, comparatia dintre tabele va avea eficienta de 70% ' De ex: se introduc 2 coloane 'Numele' si 'Adresa' ' Inainte de introducere, pe forma, la evenimentul "Before Update" verifici daca 'Numlele' si 'Adresa' ' exista deja in tabelul actual, daca nu il introduci , daca exista, nu-l introduci si notifici utilizatorul. Private Sub Form_BeforeUpdate(Cancel As Integer) ' Presupun ca tabelul actual se numeste tblExistent, iar cel nou, tblNew ' pe forma exista doar 2 TexBox-uri , unul cu numele 'edtNumele', iar altul cu 'edtAdresa' if DCount("Numele","tblExistent","Numele='" & edtNumele & " AND Adresa='" & edtAdresa & "'") > 0 then ' Asa date deja exista si ele nu vor fi introduse in tabel. MsgBox "Aceste date deja exista" Cancel = True EndIf End Sub Sper ca am inteles corect intrebarea, daca mai sunt - go ahead. |
#6
Posted 11 August 2006 - 19:32

ryady, ai 2 posibilitati: Una e sa verifici dupa introducere: sa compari tabelul nou , cu acel vechi. Poti face ca in exemplul precedent, iterind fiecare inscriere Dim rs as Recordset Dim rs1 as Recordset rs1.Open "select * from NumeTabelaNoua" rs.Open "select * from NumeTabelaVeche" rs.MoveFirst for i = 0 to rs.RecordCount - 1 rs1.MoveFirst While not rs1.Eof ' Aici poti pune in conditii coloanele care nu trebuie sa coincida If rs!coloana1 = rs1!colana1 AND rs!colana2 = rs1!coloana2 Then rs1.Delete ' Daca a gasit valori care coincid , sterge din tabelul nou inscrierea EndIf rs1.MoveNext Wend rs.MoveNext Next iCu valorile de genul 0254 XXX XXX XXX si 0254-XXXXXXXXX poti sa le desparti (pe XXXXXXXXX), sau sa le combini (pe XXX XXX XXX) ca prelucrarea lor sa fie mai usoara. A 2.a metoda este mai eficienta, sa verifici la introducere. Deoarece dupa introducere se stringe o gramada de informatie, dupa care va trebui sa o aranjezi, si daca vor fi greseli in introducere, comparatia dintre tabele va avea eficienta de 70% ' De ex: se introduc 2 coloane 'Numele' si 'Adresa' ' Inainte de introducere, pe forma, la evenimentul "Before Update" verifici daca 'Numlele' si 'Adresa' ' exista deja in tabelul actual, daca nu il introduci , daca exista, nu-l introduci si notifici utilizatorul. Private Sub Form_BeforeUpdate(Cancel As Integer) ' Presupun ca tabelul actual se numeste tblExistent, iar cel nou, tblNew ' pe forma exista doar 2 TexBox-uri , unul cu numele 'edtNumele', iar altul cu 'edtAdresa' if DCount("Numele","tblExistent","Numele='" & edtNumele & " AND Adresa='" & edtAdresa & "'") > 0 then ' Asa date deja exista si ele nu vor fi introduse in tabel. MsgBox "Aceste date deja exista" Cancel = True EndIf End Sub Sper ca am inteles corect intrebarea, daca mai sunt - go ahead. Din cate inteleg eu omu deja are in baza de date bagate telefoanele alea intr-un format care nu e standard (are atat cu nr de tel cu cratima cat si fara), deci solutiile pe care i le oferi tu sunt bune dar nu suficiente. Ia si citeste putin despre expresiile regulate care pot fi aplicate si in VB si nu vei mai avea apoi probleme. O alta solutie e sa faci o mini aplicatie care sa-ti parcuga baza de date si sa-ti formateze toate inregistrarile dupa un sablon stabilit de tine. |
#7
Posted 12 August 2006 - 07:11

Ia si citeste putin despre expresiile regulate care pot fi aplicate si in VB si nu vei mai avea apoi probleme. O alta solutie e sa faci o mini aplicatie care sa-ti parcuga baza de date si sa-ti formateze toate inregistrarile dupa un sablon stabilit de tine. Nici nu stiam ca VB are RegExp, =) ...poate ca niciodata n-am avut nevoie de ea, dar e super, o solutie foarte buna. ![]() ryady, dar ca sa-ti faci viata mai usoara, mai bine e sa pui la faza de introducere un Input Mask si un Validate Rule. Pentru inceput userul va fi cam confuz ca nu-i primeste valoarea cu ".", care obisnuia sa-l puna in loc de spatiu, dar se va deprinde ![]() |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users