Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Incalzire in pardoseala etapizata

Suprataxa card energie?!

Cum era nivelul de trai cam din a...

probleme cu ochelarii
 Impozite pe proprietati de anul v...

teava rezistenta panou apa calda

Acces in Curte din Drum National

Sub mobila de bucatarie si sub fr...
 Rezultat RMN

Numar circuite IPAT si prindere t...

Pareri brgimportchina.ro - teapa ...

Lucruri inaintea vremurilor lor
 Discuții despre TVR Sport HD.

Cost abonament clinica privata

Tremura toata, dar nu de la ro...

Renault Android
 

Stupid Vb 6

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

#19
Yoda

Yoda

    Eternal padawan

  • Grup: Senior Members
  • Posts: 9,466
  • Înscris: 04.10.2002
@DeathRipple:

Si totusi, trebuie sa folosesti % in loc de * pentru a construi o sintaxa SQL in VB.
Si renunta la CursorType= adOpenForwardOnly, mergi pe adOpenKeyset ca sa poti avea un RecordCount.

Incearca sa inlocuiesti secventa ta de cod cu urmatoarea:

'----------------------------
Dim con As ADODB.Connection
Dim rec As ADODB.Recordset

Set con = New ADODB.Connection
Set rec = New ADODB.Recordset

con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\db1.mdb"

rec.Open "select id_acc, nume_acc, val_acc FROM caract_acc WHERE nume_acc='Locatia' AND val_acc Like '%" & fr2_2_cmb.Text & "%'", con, adOpenKeyset, adLockReadOnly

MsgBox rec.RecordCount

'----------------------------

Edited by NostraDamnUs, 06 October 2004 - 09:11.


#20
sp_attach_db

sp_attach_db

    Member

  • Grup: Members
  • Posts: 301
  • Înscris: 20.06.2004

NostraDamnUs, on Oct 6 2004, 10:09, said:

@DeathRipple:

Si totusi, trebuie sa folosesti % in loc de * pentru a construi o sintaxa SQL in VB.
Si renunta la CursorType= adOpenForwardOnly, mergi pe adOpenKeyset ca sa poti avea un RecordCount.

Incearca sa inlocuiesti secventa ta de cod cu urmatoarea:

'----------------------------
Dim con As ADODB.Connection
Dim rec As ADODB.Recordset

Set con = New ADODB.Connection
Set rec = New ADODB.Recordset

con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\db1.mdb"

rec.Open "select id_acc, nume_acc, val_acc FROM caract_acc WHERE nume_acc='Locatia' AND val_acc Like '%" & fr2_2_cmb.Text & "%'", con, adOpenKeyset, adLockReadOnly

MsgBox rec.RecordCount

'----------------------------

<{POST_SNAPBACK}>


adOpenKeyset este mai costisitor dpdv al resurselor alocate decat adForwardOnly. Plus ca la mine exemplul lui @deathripple a mers perfect cu adForwardOnly.
Problema din nou e la % care tb sa inlocuiasca * din sql select-ul din VB. Ca tip de solutie cea mai buna este insa ce cu SELECT COUNT(*) ...

:raygun:

#21
DeathRipple

DeathRipple

    communist vampire

  • Grup: Senior Members
  • Posts: 15,937
  • Înscris: 11.08.2002

NostraDamnUs, on Oct 6 2004, 10:09, said:

@DeathRipple:

Si totusi, trebuie sa folosesti % in loc de * pentru a construi o sintaxa SQL in VB.
Si renunta la CursorType= adOpenForwardOnly, mergi pe adOpenKeyset ca sa poti avea un RecordCount.

Incearca sa inlocuiesti secventa ta de cod cu urmatoarea:

'----------------------------
Dim con As ADODB.Connection
Dim rec As ADODB.Recordset

Set con = New ADODB.Connection
Set rec = New ADODB.Recordset

con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\db1.mdb"

rec.Open "select id_acc, nume_acc, val_acc FROM caract_acc WHERE nume_acc='Locatia' AND val_acc Like '%" & fr2_2_cmb.Text & "%'", con, adOpenKeyset, adLockReadOnly

MsgBox rec.RecordCount

'----------------------------

<{POST_SNAPBACK}>



sa traiesti multi ani feiriciti nenea...asa ii....merge acum....numa' imi zici si mie acum unde-i dif intre cele doua bucati de cod? imi place sa si stiu de ce sa fac asa si nu altfel...caut logica adica :) danke

#22
Yoda

Yoda

    Eternal padawan

  • Grup: Senior Members
  • Posts: 9,466
  • Înscris: 04.10.2002
Dupa cum spunea si sp_attach_db, problema principala pentru care secventa ta de cod nu functiona era caracterul '*' din sintaxa SQL, care trebuia inlocuit cu '%'.

Poate si cursorul adOpenForwardOnly ti-a creat ceva probleme.
Aici intram in sfera parerilor impartite.

@adOpenForwardOnly, teoretic ai dreptate, cursorul adOpenKeyset aloca mai multe resurse.

In practica insa, diferenta este insesizabila. Prin urmare, primeaza simplicitatea codului.

Sa nu uitam ca VB-ul este un mediu RAD, prioritara este viteza de dezvoltare si simplitatea codului.

SELECT COUNT(*) ... nu este cea mai buna solutie in cod. Sa deschizi un recordset doar ca sa-ti returneze un cont, nu ma incanta ideea.

Dar, repet, aici suntem deja pe teritoriul parerilor personale, diferite de la un programator la altul.

#23
sp_attach_db

sp_attach_db

    Member

  • Grup: Members
  • Posts: 301
  • Înscris: 20.06.2004
@nostradamus: eshti simpatic in sensul bun

Sunt de acord ca simplitatea/usurintza in utilizare primeaza in VB.

Problema e ca dragul de @DeathRipple nu a dat detalii suplimentare:
1. daca este aplicatie multi user (nu prea cred)
2. daca sunt multe inregistrari in tabela "caract_ac". Daca da atunci gandestete ca recorsetul obtinut in varianta in cu "SELECT id_acc, nume_acc, val_acc  .... "  va contine - posibil - multe inregistrari (daca gradul de selectie este mic) fapt ca va duce la alocarea unor resurse suplimentare necesare memorarii recordsetului respectiv. Ce te faci daci SELECT-ul intoarce 500/1000 de inregistrari.
Compara cu varianta:
Daca folosesti "SELECT COUNT(*) FROM ..." atunci recorsetul va contine o singura valoare : nr. de inregistrari si cu siguranta va necesita mai putine resurse.

Fiecare crede ce vrea si face ce doreste ...

Toate cele bune @nostradamuse

:raygun:

#24
Yoda

Yoda

    Eternal padawan

  • Grup: Senior Members
  • Posts: 9,466
  • Înscris: 04.10.2002
@sp_attach_db:  :coolspeak:

Sunt de acord cu tine.
Daca aplicatia respectiva e multiuser pe Access db, atunci trebuie atentie maaare la interogari si construirea de recordseturi... dar mai ales la distrugerea lor!

In fine...
Sa speram ca DeathRipple e pe drumul cel bun, sa-i uram succes!

Toate cele bune si tie, sp_attach_db.
Succes la "dosarele secrete"...

#25
sp_attach_db

sp_attach_db

    Member

  • Grup: Members
  • Posts: 301
  • Înscris: 20.06.2004
@NostraDamnUs

"dosarele secrete" ale sql server-ului si ...  ;)












Dupa cum vezi  l-am dotat pe Ralph cu un gun :raygun:      :lol:

#26
DeathRipple

DeathRipple

    communist vampire

  • Grup: Senior Members
  • Posts: 15,937
  • Înscris: 11.08.2002
... va prea multumesc pt indicatiile voastre...s-au dovenit a fi de ajutor.

acum...o noua problema. vreau sa dau posibilitatea la user sa printeze ceea ce cauta in baza de date. mai clar: dupa ce-si alege anumite criterii de selectie, pe ecran apar, intr-un listbox, mai multe produse, fiecare cu niste caracteristici. vreau sa ofer posibilitatea de a printa o lista sub forma unui tabel, cu un numar de coloane fix si nr de linii variabile, avand cap de tabel etc....cum fac eu lucrul asta frumos si curat in VB6? macar niste hint-uri daca nu un tutorial scurt si la obiect

multumesc mult

Edited by cretze, 11 October 2004 - 07:52.


#27
DeathRipple

DeathRipple

    communist vampire

  • Grup: Senior Members
  • Posts: 15,937
  • Înscris: 11.08.2002
aplicatia e dedicata sa ruleze pe o singura masina ;) so, no problems with the recordsets

#28
sp_attach_db

sp_attach_db

    Member

  • Grup: Members
  • Posts: 301
  • Înscris: 20.06.2004
...
și acuma rubrica de hinturi:
1. folosește obiectul Printer + NewPage,Print "ceva",EndDoc
2. afișează datele într-un grid a cărui conținut poate fi ulterior tipărit ușor
3. folosește un generator de rapoarte
4. du rezultatele într-un fișier *.txt pe care îl tipărești ulterior
5. afișezi rezultatele într-un form sau picture box separat și apoi folosești metoda Print (nu știi ce-i aia metodă ? Pune mânuța și citește MSDN-ul în loc să pierzi vremea pe net)

Toate cele bune :raygun:

Edited by cretze, 11 October 2004 - 07:51.


#29
aesservs

aesservs

    New Member

  • Grup: Members
  • Posts: 5
  • Înscris: 25.10.2004
Stiu ca e cam tarziu ptr raspuns, dar...

daca mai ai nevoie de un generator de rapoarte tip text (in vb6), care preia date dintr=un tabel dat (ii spun intr-un type baza de date, tabelul, capul de tabel - ce sa afiseze in loc de denumirea campului - daca sunt coloane excluse si multe altele) si le scrie intr=un fisier text pe care il deschide intr-un editor gen Notepad, unde mai poti face niste formatari (RTF), salva si trimite la imprimanta....

daca mai ai nevoie, deci, pot sa ti-l dau.

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 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