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

program sa 200 komponenti

[es] :: Pascal / Delphi / Kylix :: program sa 200 komponenti

[ Pregleda: 2867 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milos Sreckovic
System administrator, SET d.o.o.
Šabac

Član broj: 30126
Poruke: 267
*.smin.sezampro.yu.

Sajt: www.set.rs


+2 Profil

icon program sa 200 komponenti09.01.2006. u 16:10 - pre 222 meseci
imam mysql bazu na linuxu i pravim klijent u Delphi-u. Radim pomocu dbexpress. postavim SQLconection i postavim za svaku tablu TSQLTable(ma ima ih samo 54). i sad moram za svaku tablu da stavljam DataSetProvider i Client. To je 100 komponenti vise. Da ne spominjem da moram da stavim i jos 50 data seta. Ima li nesto sto preskace sve ovo ili stvarno mora da se ovako radi????
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: program sa 200 komponenti09.01.2006. u 17:09 - pre 222 meseci
Nista te ne sprecava da koristis samo jedan TSQLQuery (i komponente koje su ti potrebne za rad sa njim). U query-u posle samo kazes SELECT * FROM Tabela i imas tabelu... kad god ti treba neka druga ti napises nov sql zahtev.
 
Odgovor na temu

Milos Sreckovic
System administrator, SET d.o.o.
Šabac

Član broj: 30126
Poruke: 267
*.smin.sezampro.yu.

Sajt: www.set.rs


+2 Profil

icon Re: program sa 200 komponenti09.01.2006. u 17:58 - pre 222 meseci
da, ali u tom slucaju cu imati samo jedan dataset i sve ce biti nakaceno na njega, pa kad se promeni sve ce da se promeni, sto nije pozeljno. a kad skinem dataset nestaju podaci, tako da mogu imam podatke samo na jednom mestu, a sta ako mi treba na dva ili nedaj boze 10. ipak imam 50 tabela. trebace mi vise u isto vreme.

i drugo
imam tabelu posao i svaki posao i podposao. svaki posao ima nekoliko podposlova. Koju komponentu da uzmem da mi izlista poslove, pa da ja kliknem na neki i da ona u drugoj istoj takvoj komponenti izlista podposlove. pokusao sam sa DBListBox. i ima da izberem datase i koje polje ocu ali jednostavno ne izbacuje nista. Nemogu da provalim kako se koristi. ako neko zna da koristi ili neko drugo resenje bicu vecno zahvalan
 
Odgovor na temu

schild
Dejan Šild
TopCode Software
Subotica

Član broj: 59888
Poruke: 138
*.legendww.com.

Sajt: www.topcode.rs


+2 Profil

icon Re: program sa 200 komponenti10.01.2006. u 06:35 - pre 222 meseci
"konj" wrote:

Citat:

da, ali u tom slucaju cu imati samo jedan dataset i sve ce biti nakaceno

na njega, pa kad se promeni sve ce da se promeni, sto nije pozeljno. a

kad skinem dataset nestaju podaci, tako da mogu imam podatke samo na

jednom mestu, a sta ako mi treba na dva ili nedaj boze 10. ipak imam 50

tabela. trebace mi vise u isto vreme.



Pa nemas nek odrugo resenje, osim eventualno da koristis TSimpleDataSet

(mislim da se tako zove), on ima u sebi i TProvider i TClientDataSet, pa

ces imati manje komponenti.

Ili da nadjes neke "native" komponente za MySQL.

Ja bi nan tvom mestu ipak bazu prebacio u FireBird, i koristio FIBPlus

koje su fantasticne!


Citat:

i drugo

imam tabelu posao i svaki posao i podposao. svaki posao ima nekoliko

podposlova. Koju komponentu da uzmem da mi izlista poslove, pa da ja

kliknem na neki i da ona u drugoj istoj takvoj komponenti izlista

podposlove. pokusao sam sa DBListBox. i ima da izberem datase i koje

polje ocu ali jednostavno ne izbacuje nista. Nemogu da provalim kako se

koristi. ako neko zna da koristi ili neko drugo resenje bicu vecno zahvalan



Napravis proceduru koja puni TComboBox sa rezultatima nekog querija, i

onda na onClick odnekud izvuces sifru za Combo.ItemIndex i sa tom sifrom

(PK) pokrenes drugi upit...

Ja sam napravio varijantu da PK cuva u Items.Object, pa to izgleda ovako:


type

TSifra = class

// clasa koja se kaci za stavku u cboxu

sifra : array[1..3] of string; // moze da ima 3 sifre

end;


procedure PopuniCombo(ACBox: TObject; ASql: string; q1: TpFIBQuery;

AFDesc, AFSif: string;

Asif2: string=""; ASif3: string=""; SveNaziv: string="<SVE>";

DoOnChange: boolean=true);

var sif :TSifra;

ACB: TComboBox;

// ako je SveNaziv="" tada nema opcija SVI

begin

ACB:= TComboBox(ACBox); // tumacim prosledjeni objekat kao ComboBox

q1.close;

q1.SQL.Clear;

q1.SQL.Append(ASql);

q1.ExecQuery;

ACB.Clear; //sl_SifsTalas.Clear;

sif:=TSifra.Create; sif.sifra[1]:="%"; sif.sifra[2]:="%";

sif.sifra[3]:="%";

if SveNaziv<>"" then

ACB.AddItem(SveNaziv, sif);

while not q1.Eof do

begin

sif:=TSifra.Create;

sif.sifra[1]:=q1.fieldbyname(AFSif).AsString;

if Asif2<>"" then

sif.sifra[2]:=q1.fieldbyname(Asif2).AsString

else

sif.sifra[2]:="";

if Asif3<>"" then

sif.sifra[3]:=q1.fieldbyname(Asif3).AsString

else

sif.sifra[3]:="";

ACB.AddItem(q1.fieldbyname(AFDesc).AsString, sif);

q1.Next;

end;

if ACB.Items.Count>0 then

begin

ACB.ItemIndex:=0;

if assigned(ACB.OnChange) and (DoOnChange) then

ACB.OnChange(ACB);

end;

//

q1.Close;

end;


procedure DopuniCombo(ACBox: TObject; AFDesc, AFSif: string; Asif2:

string=""; ASif3: string="");

var sif :TSifra;

ACB : TComboBox;

begin

// ova procedura dodaje "rucno" satvku sa sifrom u ComboBox

ACB:= TComboBox(ACBox);

sif:=TSifra.Create;

sif.sifra[1]:=AFSif;

sif.sifra[2]:=ASif2;

sif.sifra[3]:=ASif3;

ACB.AddItem(AFDesc, sif);

end;


procedure BrisiComboObjekte(ACB: TObject);

var i: Integer;

begin

// oslobadjam objekte iz cboxa pri izlasku iz forme

for i:=0 to TComboBox(ACB).Items.Count-1 do

if assigned(TComboBox(ACB).Items.Objects) then

TComboBox(ACB).Items.Objects.Free;

end;


function GetSifru (ACB: TObject; rb: integer=1): string;

begin

// vraca sifru iz objekta, koristis u CB.OnClick...

if rb>3 then exit; if rb<1 then exit;

result:=

TSifra(TComboBox(ACB).Items.Objects[TComboBox(ACB).ItemIndex]).sifra[rb];

end;


Nadam se da ces se snaci.


Pozdrav


 
Odgovor na temu

schild
Dejan Šild
TopCode Software
Subotica

Član broj: 59888
Poruke: 138
*.legendww.com.

Sajt: www.topcode.rs


+2 Profil

icon Re: program sa 200 komponenti10.01.2006. u 06:49 - pre 222 meseci
"konj" wrote:
Citat:

i drugo
imam tabelu posao i svaki posao i podposao. svaki posao ima nekoliko podposlova. Koju komponentu da uzmem da mi izlista poslove, pa da ja kliknem na neki i da ona u drugoj istoj takvoj komponenti izlista podposlove. pokusao sam sa DBListBox. i ima da izberem datase i koje polje ocu ali jednostavno ne izbacuje nista. Nemogu da provalim kako se koristi. ako neko zna da koristi ili neko drugo resenje bicu vecno zahvalan
Prethodni odgovor koj sam poslao nije dobro formatiran, pa cu probati ponovo da posaljem. Sorry sto se ponavljam!

Pa evo:

type
    TSifra = class
    // clasa koja se kaci za stavku u cboxu
        sifra : array[1..3] of string; // moze da ima 3 sifre
    end;

procedure PopuniCombo(ACBox: TObject; ASql: string; q1: TpFIBQuery; AFDesc, AFSif: string;
    Asif2: string=''; ASif3: string=''; SveNaziv: string='SVE'; DoOnChange: boolean=true);
var sif :TSifra;
    ACB: TComboBox;
// ako je SveNaziv='' tada nema opcija SVI
begin
    ACB:= TComboBox(ACBox); // tumacim prosledjeni objekat kao ComboBox
    q1.close;
    q1.SQL.Clear;
    q1.SQL.Append(ASql);
    q1.ExecQuery;
    ACB.Clear;
    sif:=TSifra.Create; sif.sifra[1]:='%'; sif.sifra[2]:='%'; sif.sifra[3]:='%';
   if SveNaziv'' then
        ACB.AddItem(SveNaziv, sif);
    while not q1.Eof do
        begin
        sif:=TSifra.Create;
      sif.sifra[1]:=q1.fieldbyname(AFSif).AsString;
      if Asif2'' then
         sif.sifra[2]:=q1.fieldbyname(Asif2).AsString
      else
          sif.sifra[2]:='';
      if Asif3'' then
         sif.sifra[3]:=q1.fieldbyname(Asif3).AsString
      else
          sif.sifra[3]:='';
        ACB.AddItem(q1.fieldbyname(AFDesc).AsString, sif);
        q1.Next;
        end;
    if ACB.Items.Count0 then
        begin
        ACB.ItemIndex:=0;
      if assigned(ACB.OnChange) and (DoOnChange) then
            ACB.OnChange(ACB);
        end;
    //
    q1.Close;
end;

procedure DopuniCombo(ACBox: TObject; AFDesc, AFSif: string; Asif2: string=''; ASif3: string='');
var sif :TSifra;
    ACB : TComboBox;
begin
   ACB:= TComboBox(ACBox);
   sif:=TSifra.Create;
   sif.sifra[1]:=AFSif;
   sif.sifra[2]:=ASif2;
   sif.sifra[3]:=ASif3;
   ACB.AddItem(AFDesc, sif);
end;

procedure BrisiComboObjekte(ACB: TObject);
var i: Integer;
begin
    // oslobadjam objekte iz cboxa
    for i:=0 to TComboBox(ACB).Items.Count-1 do
        if assigned(TComboBox(ACB).Items.Objects) then
            TComboBox(ACB).Items.Objects.Free;
end;

function GetSifru (ACB: TObject; rb: integer=1): string;
begin
    // vraca sifru iz objekta
   if rb3 then exit; if rb1 then exit;
    result:= TSifra(TComboBox(ACB).Items.Objects[TComboBox(ACB).ItemIndex]).sifra[rb];
end;
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: program sa 200 komponenti

[ Pregleda: 2867 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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