Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Telefonul Oppo a74 mi-a blocat ca...

A inviat Mudava

Vouchere de vacanta

Cand One United nu mai vand isi v...
 Mandolina feliat legume

Atestat consilier de siguranta

alarma auto Autowatch 346 RLI

Ce se intampla cu actualii tineri...
 Descifrare reteta

Zapp fix

Rulment pt diferential 4motion

Lipire filtru la baterie ikea
 Meserias nu mai vine sa termine l...

Soferii prinsi bauti sau drogati ...

geometrie autorulota

Sfat achiziție laptop ~4500 ...
 

cum fac o cautare in baza de date folosind vb 6

- - - - -
  • Please log in to reply
6 replies to this topic

#1
jumbo

jumbo

    New Member

  • Grup: Members
  • Posts: 2
  • Înscris: 18.07.2006
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.

:crybaby:

#2
B3aT

B3aT

    Member

  • Grup: Members
  • Posts: 749
  • Înscris: 02.03.2005
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 i
Uite aici tutoriale si cu alte metode :
http://www.devdos.com/vb/lesson4.shtml

#3
jumbo

jumbo

    New Member

  • Grup: Members
  • Posts: 2
  • Înscris: 18.07.2006
multumesc B3aT

 B3aT, on Jul 19 2006, 16:38, said:

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 i
Uite aici tutoriale si cu alte metode :
http://www.devdos.com/vb/lesson4.shtml


#4
ryady

ryady

    Member

  • Grup: Members
  • Posts: 449
  • Înscris: 30.09.2003
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
Hato0be

Hato0be

    Junior Member

  • Grup: Members
  • Posts: 49
  • Înscris: 05.07.2006
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 i
Cu 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
mdc

mdc

    Member

  • Grup: Members
  • Posts: 615
  • Înscris: 05.08.2005

 Hato0be, on Aug 11 2006, 13:20, said:

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 i
Cu 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
Hato0be

Hato0be

    Junior Member

  • Grup: Members
  • Posts: 49
  • Înscris: 05.07.2006

 mdc, on Aug 11 2006, 20:32, said:

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

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate