Witam wszystkich forumowiczow, jestem nowy na forum, szukalem podobnego przykladu, ale niestety nic nie znalazlem wiec pytam, mianowicie:
Pobralem nazwy z bazy mySQL za pomoca:
begin
ListView1.Items.Clear;
ComboBox1.items.Clear;
amortyzacja.SQLDataSet1.CommandText := 'SELECT * FROM srodki ORDER BY nazwa_srodka';
amortyzacja.SQLDataSet1.Open;
//-1 ponieważ rekordy liczone są od 0 a nie od 1
for I := 0 to amortyzacja.SQLDataSet1.RecordCount-1 do
begin
ListItem := ListView1.Items.Add;
ListItem.Caption := amortyzacja.SQLDataSet1.FieldValues['id'];
ListItem.SubItems.Add(amortyzacja.SQLDataSet1.FieldValues['nr_ew']);
ListItem.SubItems.Add(amortyzacja.SQLDataSet1.FieldValues['nazwa_srodka']);
ListItem.SubItems.Add(FloatToStr(amortyzacja.SQLDataSet1.FieldValues['wartosc_poczatkowa_srodka']) );
ListItem.SubItems.Add(FloatToStr(amortyzacja.SQLDataSet1.FieldValues['bierzaca_wartosc_amortyzacji_sr']));
ListItem.SubItems.Add(FloatToStr(amortyzacja.SQLDataSet1.FieldValues['pozostala_wartosc_srodka']));
ListItem.SubItems.Add(FloatToStr(amortyzacja.SQLDataSet1.FieldValues['miesieczna_amortyzacja']) );
ListItem.SubItems.Add(FloatToStr(amortyzacja.SQLDataSet1.FieldValues['roczna_amortyzacja']));
ListItem.SubItems.Add(amortyzacja.SQLDataSet1.FieldValues['data_przyjecia_srodka']);
ListItem.SubItems.Add(amortyzacja.SQLDataSet1.FieldValues['data_calkowitej_amortyzacji']);
ComboBox1.Items.Add(amortyzacja.SQLDataSet1.FieldValues['nazwa_srodka']);
amortyzacja.SQLDataSet1.Next;
end;
amortyzacja.SQLDataSet1.Close;
end;
oczywiscie nazwa_srodka to jedna z kolum mojej tabeli, powyzsza prodecure podpialem pod OnShow dla formy, wszystko jest ok, ale potrzebuje jeszcze dla nazwy wybranej z ComboBox'a azeby w ListView wyswietlic tylko te dane ktorych nazwa_srodka = nazwie wybranej przez uzytkownika z ComboBox'a.
Probowalem podpiac pod OnChange dla ComboBox'a:
var
nazwa_srodka:AnsiString;
begin
ListView1.Items.Clear;
ComboBox1.items.Clear;
nazwa_srodka:=user.Items.Values['nazwa_srodka'];
SQLquerry:='SELECT * FROM srodki WHERE nazwa_srodka='+nazwa_srodka+' ORDER BY nazwa_srodka;';
amortyzacja.SQLDataSet1.Open;
//-1 ponieważ rekordy liczone są od 0 a nie od 1
for I := 0 to amortyzacja.SQLDataSet1.RecordCount-1 do
begin
ListItem := ListView1.Items.Add;
ListItem.Caption := amortyzacja.SQLDataSet1.FieldValues['id'];
ListItem.SubItems.Add(amortyzacja.SQLDataSet1.FieldValues['nr_ew']);
ListItem.SubItems.Add(amortyzacja.SQLDataSet1.FieldValues['nazwa_srodka']);
ListItem.SubItems.Add(FloatToStr(amortyzacja.SQLDataSet1.FieldValues['wartosc_poczatkowa_srodka']) );
ListItem.SubItems.Add(FloatToStr(amortyzacja.SQLDataSet1.FieldValues['bierzaca_wartosc_amortyzacji_sr']));
ListItem.SubItems.Add(FloatToStr(amortyzacja.SQLDataSet1.FieldValues['pozostala_wartosc_srodka']));
ListItem.SubItems.Add(FloatToStr(amortyzacja.SQLDataSet1.FieldValues['miesieczna_amortyzacja']) );
ListItem.SubItems.Add(FloatToStr(amortyzacja.SQLDataSet1.FieldValues['roczna_amortyzacja']));
ListItem.SubItems.Add(amortyzacja.SQLDataSet1.FieldValues['data_przyjecia_srodka']);
ListItem.SubItems.Add(amortyzacja.SQLDataSet1.FieldValues['data_calkowitej_amortyzacji']);
amortyzacja.SQLDataSet1.Next;
end;
amortyzacja.SQLDataSet1.Close;
end;
progrma sie kompiluje, ale jak tylko chce cos wybrac z ComboBox'a dostaje komunikat o bledzie:
"Missing query, table name or procedure name". Moze ktos podpowie gdzie jest blad (ew. jak go usunac?)
Pozdrawiam