Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Faind (neka bolja ideja)

[es] :: C/C++ programiranje :: Faind (neka bolja ideja)

[ Pregleda: 1305 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

milan_sr
Milan Savov
Strumica

Član broj: 262218
Poruke: 108
89.185.211.*



+26 Profil

icon Faind (neka bolja ideja)30.11.2010. u 00:30 - pre 162 meseci
Imam neku access bazu, 2-3 kolone, koristim adoquery...kada hocu da upisem nesta u neku kolonu a pre toga proverim dali ta vredost vec postoi (sporedjujem) koristim sledeci kod...ali mislim kad bi baza bila malo veca sa ovim kodom to bi trajalo malo duze pri upis tog podatka...pa jer ima neki nacin da to "ubrzam"(sigurno da ima al ne znam kak :))

Code:

bool duplikat(AnsiString br)
{
int a=0;
    for ( int i=0; i<Form1->ADOQuery1->RecordCount; i++ )
       {
            Form1->ADOQuery1->RecNo=i+1;
            AnsiString pom=Form1->ADOQuery1->FieldByName("kolona")->AsString;
            if ( pom==br )
            a=a+1;
       }
        if(a!=0)
    return true;
    else
    return false;
}
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
212.200.65.*

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Faind (neka bolja ideja)30.11.2010. u 06:24 - pre 162 meseci
Zašto na nivou projekta baze ne definišeš da ne sme biti duplikata? [ Indexed = Yes (No duplicates), ili postavi primarni ključ ako je polje prirodno pripada toj kategoriji]

Što se tiče koda koji si pokazao:

1. deklaraciju AnsiString pom= ... izbaci van for petlje (u petlji ostaje samo pom=), cime obezbedjujes da se deklaracija radi samo jednom, a ne svaki put u ciklusu

2. Kada nadjes barem jedan element (if ( pom==br ) a=a+1;), odmah mozes da izadjes iz petlje:
if ( pom==br ) { a=a+1; break; }

3. Pre ulaska u proveru: Form1->ADOQuery1->DisableControls(); a posle Form1->ADOQuery1->EnableControls();


...
 
Odgovor na temu

milan_sr
Milan Savov
Strumica

Član broj: 262218
Poruke: 108
89.185.211.*



+26 Profil

icon Re: Faind (neka bolja ideja)30.11.2010. u 14:09 - pre 162 meseci
Pre provere stavim Form1->ADOQuery1->DisableControls(); a posle Form1->ADOQuery1->EnableControls(); al kad upisem vredost u tabelu ne izadje odma na gridu nego tek posle narednog otvaranja?
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Faind (neka bolja ideja)30.11.2010. u 15:03 - pre 162 meseci
EnableControls i DisableControls privremeno onemogucavaju data-aware kontrole da se sinhronizuju sa trenutnom pozicijom kursora. Dakle, dok ti kodom prolazis od prvog do poslednjeg elementa niza, ako kontrole nisu onemogucene data-aware kontrole prate podatak na kome se trenutno nalazi kursor. To trosi resurse, a nije bitno za samu kontrolu. Dakle, nakon EnableControls sve se vraca u stanje kakvo treba.
 
Odgovor na temu

milan_sr
Milan Savov
Strumica

Član broj: 262218
Poruke: 108
89.185.211.*



+26 Profil

icon Re: Faind (neka bolja ideja)30.11.2010. u 20:46 - pre 162 meseci
Hvala resio sam ga...a nece li brze raditi kad bi sve to radio sa SQL?
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Faind (neka bolja ideja)30.11.2010. u 22:10 - pre 162 meseci
Moguce da bi brze radilo sa SQL-om, jer SQL koristi indekse na najoptimalniji moguci nacin. Ipak, zato taj problem duplikata nisi resio na nivou baze?

Najbolje u forumu Baze pitaj kako bi glasio upit za takvo nesto, a secam se da je vec bilo takvih tema, u smislu, kako se pronalazi prvi sledeci slobodan broj i sl...

 
Odgovor na temu

milan_sr
Milan Savov
Strumica

Član broj: 262218
Poruke: 108
89.185.211.*



+26 Profil

icon Re: Faind (neka bolja ideja)30.11.2010. u 23:22 - pre 162 meseci
Hvala na odgovoru...
 
Odgovor na temu

[es] :: C/C++ programiranje :: Faind (neka bolja ideja)

[ Pregleda: 1305 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.