ďťż

Ładny brzuch

Witam!
Zaznaczam że jestem mocno początkujący w Delphi. Na formie wstawiłem komponenty TQuery, TDataSource i ComboBox. Chciałbym osiągnąć coś takiego aby pobrać wynik zapytania i wstawić je do listy Combo.
Na razie w komponencie TQuery wybrałem Bazę danych (Database name) i wpisałem zapytanie (SQL). W DataSOurce ustawiłem DataSet na odpowiednie zapytanie.
Teraz mnie zastanawia jak wynik tego zapytania przypisać do listy, tak aby wyświetlała mi się lista z wpisami z tabeli do ktorej wykonywałem zapytanie.

Jeśli ma to jakieś znaczenie w tym przypadku to korzystam z Delphi 3 Prof.
Użytkownik chicken81 edytował ten post 16 maj 2006, 10:20


Query1.First; while not Query1.EOF do begin  Combobox1.Items.Add('wartość pola do dodania'); // tutaj musisz poprać z Query1 wartość konkretnego pola i dodać go do listy.  Query1.Next; end;

A w jaki sposób odwołać się do tych pół. mógłbyś podać przykład na jakiejś wymyślonej tabeli?
Probowałem wstawić w nawiasie Query1.Nazwa (tak nazywa sie jedno z pól w tabeli, ale niestety wyświetliło mi 5 razy własnie Query1.Nazwa. W sumie powinno się pojawić 5 rekordów więc byłoby ok, gdybym wiedział jak się odwołać do tego pola. Poza tym w zasadzie to nazwa która się wyświetla jest dla użytkownika, a dla bazy interesujący jest tylko id wpisu przypisany do wybranego pola nazwa, Nie wiem czy dobrze rozumuję ale czy takie pole po wybrani będzie mi zwracać właśnie to id ? (Pytam z ciekawości, pozostały mi zaszłości po php).

Eidt:
Ok, z tym, już sobie poradziłem, tylko nie wiem czy do końca bo wyśwetlają mi się wszystkie wpisy, ale nie wiem czy poprawnie bo jak klikne na któryś to lista powinna wg mnie ustawić się na nim, tymczasem jej stan się nie zmienia
Użytkownik chicken81 edytował ten post 16 maj 2006, 10:51
Napisz może co chcesz osiągnąć bo być może da się to zrobić inaczej.

PS Dla pola NAZWA' użyj Combobox1.Items.Add(Query1.FieldByName('NAZWA').AsString);
W taki sposób będziesz miał dostęp jedynie do wartości kolumny NAZWA a nie do ID (ID - rozumiem, że to jakaś kolumna integerów z unikatowymi wpisami). Można się bawić i dodawać ID do Comboboxa (używając AddObject i rzutując integera na TObject) wtedy będziemy mieli również dostęp do unikatowego ID każdego wpisu w ComboBoxie. Ale IMO rozwiązanie z ComboBoxem jest średnie, bo za każdą zmianą w tabeli źródłowej należałoby odświeżać ręcznie zawartość ComboBoxa.

Update:
Znaczy się chcesz aby po wybraniu pozycji z ComboBoxa aktywny rekord ustawił się na tej pozycji ??
Użytkownik Uno edytował ten post 16 maj 2006, 11:10


Napisałem program w php i teraz potrzebuję przepisać go na Delphi stąd moje pomysły aby w jefnum ComboBoxie trzymać ID i Nazwe.
Chcę osiągnąć coś takiego że mam np tabelę użytkowników z polami: id_uzytkownika, imie, nazwisko itd. W php mogłem zrobić coś takiego że do listy w value podstawialem id_utytkownika a wyswietlałem jego imie i nazwisko. i Chodzi mi o to ze jak bede chcial dodac wpis do tabeli, zeby nie pchac wszystkich danych o uzytkowniku a jedynie jego identyfikator. Danych na temat użytkowników jest sporo więc byłoby to tylko zbędne zajmowanie miejsca w bazie.
Korzystam teraz z DBComboBoxów i zastanawia mnie również jedna rzecz. W zwykłym formularzy HTML'owym jak sobie jakąś opcję wybiorę z listy to mi się wyświetla po zwiniećiu listy, a w Delphi mimo że kliknę to się nie wyświetla, tak jakby nie było obsłużonego działania że po kliknięciu mam wybrać dany element z listy.


(...)

Ok, wszystko zaczyna działać ale nadal mam problem z pobieraniem ID z listy, w jakis sposób się do tego dobrać?
Przykładowo mam tabele opcji:
Id ocji (unikalny identyfikator)
opcja (nazwa)
W Comboboxie wyświetlam sobie te nazwy ale po wybraniu zadanej opcji chcę do bazy zapisywać tylko jej ID. Jak pobrać z listy id wpisu?

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •