Imam combobox koji punim iz baze...i on mi prikazuje dve kolone,ono sto mi treba jeste da kada izaberem prikaze samo drugu kolonu,sto mi je string,ali da prvu kolonu,integer, zapamti i ubaci je kasnije u bazu kad kliknem na button...Ne znam jesam li jasan?
Combobox sa dve kolone
Zaključano
Zakačeno
Pogledaj sve event-e sa 'Before' u nazivu, kako od combobox-a, tako i od njegovog dataset-a; neki ce vec odgovarati.
Pozz
Pozz
Gledao sam,meni ce odgovarati i ovako,evo primera
izaberem u combobox = '3 - maticna ploca'
i neka mi to prikaze u combobox i kada kliknem na dugme za upis u bazu
da mi upise samo broj 3
dakle samo prvo polje iz queryija....
izaberem u combobox = '3 - maticna ploca'
i neka mi to prikaze u combobox i kada kliknem na dugme za upis u bazu
da mi upise samo broj 3
dakle samo prvo polje iz queryija....
kad učitavaš:
while not Query.eof do
begin
ComboBox.Items.AddObject(FieldByName('id').AsString+' - '+FieldByName('opis').AsString ,TObject(FieldByName('id').AsInteger));
Query.Next;
end;
Kad snimaš:
Query.FieldByName('id').Value := Integer(TObject(ComboBox.Items.Objects[ComboBox.ItemIndex]);
while not Query.eof do
begin
ComboBox.Items.AddObject(FieldByName('id').AsString+' - '+FieldByName('opis').AsString ,TObject(FieldByName('id').AsInteger));
Query.Next;
end;
Kad snimaš:
Query.FieldByName('id').Value := Integer(TObject(ComboBox.Items.Objects[ComboBox.ItemIndex]);
Potpis
Nikad izvini!
Ucitavanje nije problem,vec ovo snimanje,ovaj deo za sniamnje prikazuje gresku,isto tako mi nije problem da snimim id polje,ali mi je problem snimanje nekog drugog polja...
Napravi funkciju koja ti u stringu uzima vrijednost koja se nalazi prije znaka "-", ako zapisuješ vrijednosti u combo kao 1 - nesto.
Potpis
F
Da,mislio sam na to,ali bih hteo elegantnije resenje...ako bas nista ,uradicu to...
Napiši kod i koju ti grešku daje, pa možda i pomogne neko.
Potpis
Nikad izvini!
Ovo mi je kod za prikazivanje podataka u comboboxu....
sifradela1 je publik promenjiva
procedure TFrmUnosDesktop.ComboBox1DropDown(Sender: TObject);
begin
with ADOQuery1 do
begin
combobox1.Clear;
Close;
SQL.Clear;
SQL.Add('select * from [komponenta]');
SQL.Add('where sifradela = 4');
Open;
ADOQuery1.First;
while (not ADOQuery1.Eof) do
begin
comboBOX1.Items.AddObject(adoquery1.Fields[3].AsString, Pointer(adoquery1.Fields[2].AsInteger));
adoquery1.Next;
sifradela1 := Integer(ComboBox1.Items.Objects[0]);
end;
end;
end;
i posle kada izlazim iz comboboxa,treba da se pojavi u labelu prva cifra
procedure TFrmUnosDesktop.ComboBox1Exit(Sender: TObject);
begin
label1.Caption := inttostr(sifradela1 );
end;
end.
sifradela1 je publik promenjiva
procedure TFrmUnosDesktop.ComboBox1DropDown(Sender: TObject);
begin
with ADOQuery1 do
begin
combobox1.Clear;
Close;
SQL.Clear;
SQL.Add('select * from [komponenta]');
SQL.Add('where sifradela = 4');
Open;
ADOQuery1.First;
while (not ADOQuery1.Eof) do
begin
comboBOX1.Items.AddObject(adoquery1.Fields[3].AsString, Pointer(adoquery1.Fields[2].AsInteger));
adoquery1.Next;
sifradela1 := Integer(ComboBox1.Items.Objects[0]);
end;
end;
end;
i posle kada izlazim iz comboboxa,treba da se pojavi u labelu prva cifra
procedure TFrmUnosDesktop.ComboBox1Exit(Sender: TObject);
begin
label1.Caption := inttostr(sifradela1 );
end;
end.
Code:
procedure TFrmUnosDesktop.ComboBox1DropDown(Sender: TObject);
begin
with ADOQuery1 do
begin
combobox1.Clear;
Close;
SQL.Clear;
SQL.Add('select * from [komponenta]');
SQL.Add('where sifradela = 4');
Open;
//ADOQuery1.First; suvišno, kad se Query otvori on je po defaultu na prvom slogu
while (not ADOQuery1.Eof) do
begin
comboBOX1.Items.AddObject(adoquery1.Fields[3].AsString, TObject(adoquery1.Fields[2].AsInteger));
adoquery1.Next;
//sifradela1 := Integer(ComboBox1.Items.Objects[0]); suvišno, integer je snimljen već u objekat
end;
end;
end;
procedure TFrmUnosDesktop.ComboBox1Exit(Sender: TObject);
begin
label1.Caption := inttostr(Integer(TObject(ComboBox1.Items.Object[ComboBox1.ItemIndex]));
end;
procedure TFrmUnosDesktop.ComboBox1DropDown(Sender: TObject);
begin
with ADOQuery1 do
begin
combobox1.Clear;
Close;
SQL.Clear;
SQL.Add('select * from [komponenta]');
SQL.Add('where sifradela = 4');
Open;
//ADOQuery1.First; suvišno, kad se Query otvori on je po defaultu na prvom slogu
while (not ADOQuery1.Eof) do
begin
comboBOX1.Items.AddObject(adoquery1.Fields[3].AsString, TObject(adoquery1.Fields[2].AsInteger));
adoquery1.Next;
//sifradela1 := Integer(ComboBox1.Items.Objects[0]); suvišno, integer je snimljen već u objekat
end;
end;
end;
procedure TFrmUnosDesktop.ComboBox1Exit(Sender: TObject);
begin
label1.Caption := inttostr(Integer(TObject(ComboBox1.Items.Object[ComboBox1.ItemIndex]));
end;
pokusaj da učitaš na ovaj način, trebalo bi da radi.
Potpis
Nikad izvini!
Mislim da to može mnogo jednostavnije da se uradi i da kod tebe nešto nije dobro kod projekcije same baze.
Recimo da koristiš TDBLookupComboBox za prikaz pojedinačnih polja iz baze
Recimo da koristiš TDBLookupComboBox za prikaz pojedinačnih polja iz baze
Izlazi greska na object....u label1.caption
taj object je mozda suvisan,bez njega izlazi neki bezveze broj,sa 7 cifara
umesto adoquery1.Fields[2] koristi adoquery1.FieldByName('polje') i navedi tačan naziv polja.
Ovo bi trebalo da radi ako ti je adoquery1.Fields[2] polje u bazi tipa Integer, sve zavisi kako si projektovao tabelu u bazi.
Ovo bi trebalo da radi ako ti je adoquery1.Fields[2] polje u bazi tipa Integer, sve zavisi kako si projektovao tabelu u bazi.
Potpis
Nikad izvini!
Kad se postavi taj kod,ono object je odmah zacrnjeno...i prikazuje gresku indetifer excepted but 'object' found
Ado query1.fields[2] jeste integer
Ado query1.fields[2] jeste integer
na kojoj liniji ti da tu grešku?
Potpis
F
label1.Caption := inttostr(Integer(TObject(ComboBox1.Items.Object[ComboBox1.ItemIndex]));
Objects umesto Object, moja greška, iz glave sam pisao.
Label1.Caption:=IntToStr(INTEGER(TObject(ComboBox1.Items.Objects[ComboBox1.ItemIndex])));
Evo ti primer u prilogu koji lepo radi to što tražiš
Label1.Caption:=IntToStr(INTEGER(TObject(ComboBox1.Items.Objects[ComboBox1.ItemIndex])));
Evo ti primer u prilogu koji lepo radi to što tražiš
Potpis
Nikad izvini!
za početak ti fali jedna zagrada na kraju, ako dobro vidim
Potpis
F
Šta će da se desi ako ti u bazi polje sifradela imaju recimo 1000 vrednosti 4