Forum » Programiranje » [Delphi] Kako spraviti tole v Array in iskanje po vseh poljih tabele
[Delphi] Kako spraviti tole v Array in iskanje po vseh poljih tabele
levaky ::
LP!
Evo sem n00b zato se že takoj oproščam za precej n00bovska vprašanja. Matra me naslednje.
1.)
Imam form z TEdit polji, kamor vnašam podatke, ki jih kasneje s pritiskom na gumb shranim v mysql bazo. Podatke iz TEdit polj v mysql prenesem z naslednjimi ukazi:
MySqlTable.Insert;
MySqlTable.FieldByName('naziv').AsString:=naziv.Text;
MySqlTable.FieldByName('naslov').AsString:=naslov.Text;
MySqlTable.FieldByName('posta').AsString:=posta.Text;
MySqlTable.FieldByName('naslov2').AsString:=naslov2.Text;
MySqlTable.FieldByName('posta2').AsString:=posta2.Text;
MySqlTable.FieldByName('tel_1').AsString:=telefon.Text;
MySqlTable.FieldByName('tel_2').AsString:=telefon1.Text;
MySqlTable.FieldByName('tel_3').AsString:=telefon2.Text;
MySqlTable.FieldByName('fax').AsString:=faks.Text;
MySqlTable.FieldByName('eposta').AsString:=eposta.Text;
MySqlTable.FieldByName('IDpodrocje_sodelovanja').AsString:=sodelovanje.Text;
MySqlTable.FieldByName('davcna').AsString:=davcna.Text;
MySqlTable.FieldByName('maticna').AsString:=maticna.Text;
MySqlTable.FieldByName('racun').AsString:=ziro.Text;
MySqlTable.FieldByName('razno').AsString:=razno.Text;
MySqlTable.Post;
ShowMessage('Vnos je dodan!');
Vem, tole zgleda grdo ko hudič, najbrž pa tudi ni najbolj optimizirano, ampak taki so začetki:)
Rad bi tele MySqlTable.blablabla spravil v kak foreach zanko ali pa kaj podobnega, pa ne vem kako se lotit. (Po moje) bi bilo najbolje bi bilo najbolje imena polj in imena TEdit polj spravit v Array-e in potem s kako zanko klicat eno in drugo spremenljivko in jo vstavit notri. Takih "klobas" imam v programu kar precej in bi s tem, če ne drugega, naredil kodo precej bolj berljivo. Problem je, da Arrayov nisem nikoli uporabljal in bi rabil malo pomoči (magari en sample) in pa hint katero zanko uporabiti.
2.)
Imam tabelo X z 3-mi polji recimo. Ali je možno iskati določen string po vseh poljih vseh zapisov? Trenutno mi edino na misel pride SELECT stavek z WHERE polje1 LIKE %$string% OR (in tako za vsa ostala polja). Ali obstaja kakšen lepši način? Ali je možno potem zadetek tudi označiti z focusom?
Najlepša hvala za odgovore, Matej
Evo sem n00b zato se že takoj oproščam za precej n00bovska vprašanja. Matra me naslednje.
1.)
Imam form z TEdit polji, kamor vnašam podatke, ki jih kasneje s pritiskom na gumb shranim v mysql bazo. Podatke iz TEdit polj v mysql prenesem z naslednjimi ukazi:
MySqlTable.Insert;
MySqlTable.FieldByName('naziv').AsString:=naziv.Text;
MySqlTable.FieldByName('naslov').AsString:=naslov.Text;
MySqlTable.FieldByName('posta').AsString:=posta.Text;
MySqlTable.FieldByName('naslov2').AsString:=naslov2.Text;
MySqlTable.FieldByName('posta2').AsString:=posta2.Text;
MySqlTable.FieldByName('tel_1').AsString:=telefon.Text;
MySqlTable.FieldByName('tel_2').AsString:=telefon1.Text;
MySqlTable.FieldByName('tel_3').AsString:=telefon2.Text;
MySqlTable.FieldByName('fax').AsString:=faks.Text;
MySqlTable.FieldByName('eposta').AsString:=eposta.Text;
MySqlTable.FieldByName('IDpodrocje_sodelovanja').AsString:=sodelovanje.Text;
MySqlTable.FieldByName('davcna').AsString:=davcna.Text;
MySqlTable.FieldByName('maticna').AsString:=maticna.Text;
MySqlTable.FieldByName('racun').AsString:=ziro.Text;
MySqlTable.FieldByName('razno').AsString:=razno.Text;
MySqlTable.Post;
ShowMessage('Vnos je dodan!');
Vem, tole zgleda grdo ko hudič, najbrž pa tudi ni najbolj optimizirano, ampak taki so začetki:)
Rad bi tele MySqlTable.blablabla spravil v kak foreach zanko ali pa kaj podobnega, pa ne vem kako se lotit. (Po moje) bi bilo najbolje bi bilo najbolje imena polj in imena TEdit polj spravit v Array-e in potem s kako zanko klicat eno in drugo spremenljivko in jo vstavit notri. Takih "klobas" imam v programu kar precej in bi s tem, če ne drugega, naredil kodo precej bolj berljivo. Problem je, da Arrayov nisem nikoli uporabljal in bi rabil malo pomoči (magari en sample) in pa hint katero zanko uporabiti.
2.)
Imam tabelo X z 3-mi polji recimo. Ali je možno iskati določen string po vseh poljih vseh zapisov? Trenutno mi edino na misel pride SELECT stavek z WHERE polje1 LIKE %$string% OR (in tako za vsa ostala polja). Ali obstaja kakšen lepši način? Ali je možno potem zadetek tudi označiti z focusom?
Najlepša hvala za odgovore, Matej
kulSMS ::
za stringe bi uporabil tako kodo
lahko deklariraš kar med konstante
const
meseci:array[0..12] of string=
('','Januar','Februar','Marec','April','Maj','Junij',
'Julij','Avgust','September','Oktober','November','December');
var
polja:array[0..12] of TEdit;
potem pa vsakega posebej vpišeš v create proceduri.
polja[0]:=naziv;
polja[1]:=naslov;
MySqlTable.FieldByName(meseci[i]).AsString:=polja[i].text;
Če imaš točno takih klobas v programu veliko je najbolje če daš eno klobaso v proceduro in jo potem kličeš.
Če pa niso čisto enake potem pa lahko recimo kličeš proceduro s parametrom
Procedure VstaviVbazo(mode:integer);
begin
//glede na mode določiš kaj se naj vstavi
end;
lahko deklariraš kar med konstante
const
meseci:array[0..12] of string=
('','Januar','Februar','Marec','April','Maj','Junij',
'Julij','Avgust','September','Oktober','November','December');
var
polja:array[0..12] of TEdit;
potem pa vsakega posebej vpišeš v create proceduri.
polja[0]:=naziv;
polja[1]:=naslov;
MySqlTable.FieldByName(meseci[i]).AsString:=polja[i].text;
Če imaš točno takih klobas v programu veliko je najbolje če daš eno klobaso v proceduro in jo potem kličeš.
Če pa niso čisto enake potem pa lahko recimo kličeš proceduro s parametrom
Procedure VstaviVbazo(mode:integer);
begin
//glede na mode določiš kaj se naj vstavi
end;
zhigatsey ::
Namesto navadnih komponent(TEdit) uporaljaj DB komponente (TDBEdit), in ne bo ti treba
tega špeha pisati...
tega špeha pisati...
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Baza & c#Oddelek: Programiranje | 4155 (3213) | xardas |
» | C# text v .pdfOddelek: Programiranje | 1419 (1208) | japol |
» | [VB] Komunikacija s serijskimi napravamiOddelek: Programiranje | 2301 (1575) | mNeRo |
» | kako odpret DB datoteko (ni paradox)Oddelek: Programiranje | 1632 (1528) | zeleznika |
» | Mam en problem...Oddelek: Programiranje | 1205 (1042) | glavic |