Problemy z bazami danych

0

Mam pytanie jak do komponentu DBComboBox wstawic gane z bazy danych MS Access, i jeszcze jak sortować pliki z bazy w DbGrid i wyszukiwać w DbGrid?

0

jeśli chodzi o DBComboBox to ustaw właściwość DataSource na odpowiedni komponent DataSource który umieściłeś na formularzu i ustaw właściwość DataField, na atrybut który ma być wyświetlany w DBComboBox (oczywiście muszą być dane w tabeli żeby się coś wyświetliło w kontrolce)
Jeśli chodzi o sortowanie to, po pierwsze - w DBGrid nie sortue się plików tylko dane. Po drugie sortowanie danych można zrobić oprogramowując zdarzenie onTitleClick komponentu DBGrid

przykładowy kod robiący sortowanie tabeli Ksiazki

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var zapytanie:string;
begin
    // w zależności od nagłówka, który został kliknięty budowane jest
    //odpowiednie zapytanie SQL
    if Column.Title.Caption='ISBN' then
        zapytanie:='SELECT * FROM Ksiazki ORDER BY ISBN';
    if Column.Title.Caption='TYTUL' then
        zapytanie:='SELECT * FROM Ksiazki ORDER BY Tytul';
    if Column.Title.Caption='PODTYTUL' then
        zapytanie:='SELECT * FROM Ksiazki ORDER BY Podtytul';
    if Column.Title.Caption='LICZBA_STRON' then
        zapytanie:='SELECT * FROM Ksiazki ORDER BY Liczba_Stron';
    if Column.Title.Caption='ID_KATEGORII' then
        zapytanie:='SELECT * FROM Ksiazki ORDER BY ID_Kategorii';
    if Column.Title.Caption='RECENZJA' then
        zapytanie:='SELECT * FROM Ksiazki ORDER BY Recenzja';
    Query1.Close; //zamknięcie komponentu
    Query1.SQL.Clear; // wyczyszczenie zawartości zapytania SQL
    Query1.SQL.Add(zapytanie); // dodanie nowego zapytania
    Query1.Open; //wykonanie zapytania
end;

Jeśli chodzi o wyszukiwanie w komponencie DBGrid to tak naprawdę wyszukuje się w komponencie zbioru danych czyli np. w Table, Query. Możesz to zrobić za pomocą metod FindKey, FindNearest lub Locate. Przyład tej ostatniej zamieszczam poniżej

procedure TForm1.Button1Click(Sender: TObject);
begin
    //jeśli wpisano tytuł w kontrolce Edit1
    if Edit1.text<>'' then
        //spróbuj znaleźć książkę o podanym tytule
       if Table1.Locate('Tytul',VarArrayOf([Edit1.Text]),[loPartialKey])=False
       then
         //jeśli nie znaleziono książki o podanym tytule to wyświetl komunikat
          showmessage('Nie znaleziono książki zawierającej taki tytuł');
end;
0

ok dzieki za podpowiedz, ale mi nie chodzilo o baze sql tylko o Access (.mdb), a z tym wyswietlaniem DBComboBox to nie dziala, nic mi sie nie pokazuje, chyba ze ustawie DataField na nazwe tabeli wtedy wyswietla mi ale tylko 1 wpis z tabeli, a jeszcze jak mam wstawic sama tabele .db np. jak bym mial wszystko w pojedynczych tabelach to jak to wstawic?

0

a jeszcze jedno, jak poslugiwac sie table, query, i jak zrobic zeby po kliknieciu na poszczegolne dane w grid otwieralo sie nowe okno, sorry ze tak duzo pytan ale w koncu po to sa fora.

Pozdrawiam wszystkich i z gory dzieki!!

0
zxcvbnm1 napisał(a)

a jeszcze jedno, jak poslugiwac sie table, query, i jak zrobic zeby po kliknieciu na poszczegolne dane w grid otwieralo sie nowe okno, sorry ze tak duzo pytan ale w koncu po to sa fora.

Pozdrawiam wszystkich i z gory dzieki!!

Nie - od takich pytań są kursy i książki. Forum to nie kurs jak krok po kroku zrobić aplikację. Fora są od odpowiedzi na konkretne pytania i na tyle trudne, że nie znajdzie się na nie odpowiedzi w każdym kursie

0

Napisalem taka procedutke jak wyzej bylo w przykladzie "Nazwa to jak rozumiem nazwa pola w tabeli a nie aliasu w DBgrid"

procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.text<>'' then
  if ADOQuery1.Locate('Nazwa',VarArrayOf([Edit1.Text]),[loPartialKey])=False
  then showmessage('Nie znaleziono Firmy zawierającej taka Nazwe');
end;

wszystko sie kompiluje ale po wpisaniu danych w edit1 wywala mi blad, a mialo pokazac wynik w dbgrid, jesli dobrze rozumiem
ADOQuery1 jest polacozne z BGgrid oczywiscie i przyklad z sortowaniem po kolumnach dzila

a reszta nie..

prosze o pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1