Bazy danych. Wyświetlanie SQL Query

dział ogólny

Bazy danych. Wyświetlanie SQL Query

Nowy postprzez Ho88it » wtorek, 16 grudnia 2008, 02:06

Witam ponownie wszystkich.

Zabrałem się za kolejny program, napotkałem kilka problemów a w poradniku CyfrowegoBarona nie ma ich rozwiązania...

Bazę zbudowałem na komponentach:
Kod: Zaznacz cały
ClientDataSet
DataSource
DBGrid
DBNavigator


Program działa poprawnie, problem jest z wyszukiwaniem wprowadzanych fraz. Robię to w ten sposób:

Kod: Zaznacz cały
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
if (Edit1->Text!=""){
   if (ClientDataSet1Producent->Value!=Edit1->Text) { //tu sprawdzam czy wprowadzona wartość jest inna jak w polu "Producent"
               
                //jeżeli tak to:...
               //jaka funkcja pokaże mi w DBGrid1 tylko rekordy speÅ‚niajÄ…ce zaÅ‚ożenie?                                   }
                }
}


Po drugie:
Jak utworzyć kwerendę która pokaże w drugim DBGrid2 rekordy powiązane kluczem z rekordami znalezionymi w DBGrid1?

W załączniku GUI programu.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Ostatnio edytowano czwartek, 8 stycznia 2009, 17:21 przez Ho88it, łącznie edytowano 1 raz
Internet Explorer to program, który służy do przeglądania internetu z twojego komputera i na odwrót.
Avatar użytkownika
Ho88it
Homos antropiczny
Homos antropiczny
 
Posty: 63
Dołączył(a): niedziela, 10 sierpnia 2008, 20:53
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: brak systemu
Kompilator: Visual Studio 2008
Visual Studio 2010
Gadu Gadu: 0
    NieznanyNieznana

Re: Bazy danych. Kilka problemów.

Nowy postprzez Ho88it » Å›roda, 17 grudnia 2008, 00:48

Problem wyświetlania szukanych rekordów sam już rozwiązałem.

Może chociaż ktoś zna sztuczki do zliczania wierszy w obiekcie ClientDataSet?
Internet Explorer to program, który służy do przeglądania internetu z twojego komputera i na odwrót.
Avatar użytkownika
Ho88it
Homos antropiczny
Homos antropiczny
 
Posty: 63
Dołączył(a): niedziela, 10 sierpnia 2008, 20:53
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: brak systemu
Kompilator: Visual Studio 2008
Visual Studio 2010
Gadu Gadu: 0
    NieznanyNieznana

Re: Bazy danych. Kilka problemów.

Nowy postprzez Ho88it » Å›roda, 17 grudnia 2008, 01:26

Dla tych co mają podobny problem z wyszukiwaniem wartości w kolumnie umieszczam rozwiązanie (mało efektywne ale skuteczne):

Kod: Zaznacz cały
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
if (Edit1->Text!="") {

int j=1;
ClientDataSet1->First();// <-- ta linijka jest niezbędna aby zacząć wyszukiwanie od początku pliku

  while (ClientDataSet1->Eof!=true)
{
    if (ClientDataSet1->Fields->Fields[0]->Value == Edit1->Text)
              {
              StringGrid1->Cells[0][j]=ClientDataSet1->Fields->Fields[0]->Value; // wstawiamy wyniki

             //break;    //<-- jeżeli chcemy znaleźć pierwszÄ… wartość
            ClientDataSet1->Next(); // jeżeli chcemy znaleźć wszystkie
          j++;
    }
      else

    ClientDataSet1->Next();
  }
}
}


Sposób na wypełnienie nazw kolumn otwieranej bazy:

Kod: Zaznacz cały
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute())
  {

  int i=0;

  ClientDataSet1->LoadFromFile(OpenDialog1->FileName);

  StringGrid1->ColCount=ClientDataSet1->FieldCount; // ile mamy kolumn?

  while (i<ClientDataSet1->FieldCount)  //wypeÅ‚nienie wszystkich....
        {
            StringGrid1->Cells[i][0]=ClientDataSet1->Fields->Fields[i]->DisplayLabel; // ... nazwami kolumn z bazy danych
      i++;
        }
    }
}


Program śmiga jak mało co.
Internet Explorer to program, który służy do przeglądania internetu z twojego komputera i na odwrót.
Avatar użytkownika
Ho88it
Homos antropiczny
Homos antropiczny
 
Posty: 63
Dołączył(a): niedziela, 10 sierpnia 2008, 20:53
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: brak systemu
Kompilator: Visual Studio 2008
Visual Studio 2010
Gadu Gadu: 0
    NieznanyNieznana

Re: Bazy danych. Kilka problemów.

Nowy postprzez Corvis » czwartek, 18 grudnia 2008, 01:14

Może chociaż ktoś zna sztuczki do zliczania wierszy w obiekcie ClientDataSet?


ClientDataSet->RecordCount;

Co do wyszukiwania :

Kod: Zaznacz cały
TLocateOptions opts;
opts << loCaseInsensitive  << loPartialKey;

if(!ClientDataSet->Locate("kolumna","szukany tekst",opts)) {
    ShowMessage("brak danych");
}


Sposób prosty :) kod możesz wrzucić np w zdarzenie OnChange edita i wtedy za naciśnięciem jakieś klawisza na edicie jeżeli litera znajduje sie w bazie zostaniesz przeniesiony tam np. szukasz słowa programowanie
masza w bazie słowa :

próg
program
programowanie

wpisujesz pr zostajesz przeniesiony na próg
wpisujesz prog zostajesz przeniesiony na program
itd.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
PodziÄ™kowaÅ‚ : 80
OtrzymaÅ‚ podziÄ™kowaÅ„: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    NieznanyNieznana

Re: Bazy danych. Kilka problemów.

Nowy postprzez Ho88it » czwartek, 18 grudnia 2008, 01:19

Eeee.... Corvis.... zaimponowałeś mi ;)
Dokładnie oto chodziło!
Wielkie Dzięki!
Internet Explorer to program, który służy do przeglądania internetu z twojego komputera i na odwrót.
Avatar użytkownika
Ho88it
Homos antropiczny
Homos antropiczny
 
Posty: 63
Dołączył(a): niedziela, 10 sierpnia 2008, 20:53
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: brak systemu
Kompilator: Visual Studio 2008
Visual Studio 2010
Gadu Gadu: 0
    NieznanyNieznana

Re: Bazy danych. Kilka problemów.

Nowy postprzez Corvis » czwartek, 18 grudnia 2008, 01:27

Jak utworzyć kwerendę która pokaże w drugim DBGrid2 rekordy powiązane kluczem z rekordami znalezionymi w DBGrid1?


jest parę sposób :
1 ) Zrobienie układu Master -> Detail z wykorzystaniem ClientDataSet-a -> dość skomplikowane w zrobieniu.
2 ) Napisanie funkcji która będzie wywoływać odpowiednie zapytanie Sql wyświetlające dane dodatkowe do tego drugiego grida.

Jeżeli mam ci pomóc muszę wiedzieć jakiej bazy używasz.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
PodziÄ™kowaÅ‚ : 80
OtrzymaÅ‚ podziÄ™kowaÅ„: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    NieznanyNieznana

Re: Bazy danych. Kilka problemów.

Nowy postprzez Corvis » czwartek, 18 grudnia 2008, 01:28

ShowMessage
lepiej nie używaj bo będzie to denerwowało :) lepiej jest wstawić Beep() , albo jakiś czerwony kolor czcionki w Edicie jeżeli wyszukiwanie nie dało dobrego rezultatu
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
PodziÄ™kowaÅ‚ : 80
OtrzymaÅ‚ podziÄ™kowaÅ„: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    NieznanyNieznana

Re: Bazy danych. Kilka problemów.

Nowy postprzez Ho88it » czwartek, 18 grudnia 2008, 12:09

ShowMessage nie używam w ogóle bo wg. mnie lepsze jest użycie jakiegoś Memo jako podglądu zdarzeń (logi :) ).

Baza danych jest plikowa XML. Będę ją musiał rozstrzelić na kategorie i używać kluczy (czyli dochodzi Cała seria obiektów LookUp).
Internet Explorer to program, który służy do przeglądania internetu z twojego komputera i na odwrót.
Avatar użytkownika
Ho88it
Homos antropiczny
Homos antropiczny
 
Posty: 63
Dołączył(a): niedziela, 10 sierpnia 2008, 20:53
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: brak systemu
Kompilator: Visual Studio 2008
Visual Studio 2010
Gadu Gadu: 0
    NieznanyNieznana

Re: Bazy danych. Kilka problemów.

Nowy postprzez Ho88it » piÄ…tek, 19 grudnia 2008, 00:04

Kwerendy czas zacząć i .... chyba będzie trzeba nieco przerobić program.. :?
Corvis co byś polecił do zaimplementowania dla prostej obsługi kwerend? Ja osobiście zaczynam dostrzegać błąd w który zabrnąłem używając komponentów nie obsługujących SQL.
Internet Explorer to program, który służy do przeglądania internetu z twojego komputera i na odwrót.
Avatar użytkownika
Ho88it
Homos antropiczny
Homos antropiczny
 
Posty: 63
Dołączył(a): niedziela, 10 sierpnia 2008, 20:53
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: brak systemu
Kompilator: Visual Studio 2008
Visual Studio 2010
Gadu Gadu: 0
    NieznanyNieznana

Re: Bazy danych. Kilka problemów.

Nowy postprzez Ho88it » Å›roda, 7 stycznia 2009, 22:44

Kolejny zgrzyt...
Problem polega na wyświetleniu danych z trzech tablic w jednym komponencie DBGrid za pomocą kwerendy SQL z komponentu Query.
scrsht.JPG


To jak jest skonfigurowany komponent kwerendy (połączenie z bazą)
query.JPG


A takie ma źródło danych Tablica.
dbgrid.JPG


Problem był by rozwiązany gdyby tablica zechciała łaskawie wyświetlić wynik kwerendy a nie ustawionej tablicy...

Da się to tak zrobić, czy trzeba użyć zwykłego StringGrid?
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Internet Explorer to program, który służy do przeglądania internetu z twojego komputera i na odwrót.
Avatar użytkownika
Ho88it
Homos antropiczny
Homos antropiczny
 
Posty: 63
Dołączył(a): niedziela, 10 sierpnia 2008, 20:53
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: brak systemu
Kompilator: Visual Studio 2008
Visual Studio 2010
Gadu Gadu: 0
    NieznanyNieznana

Re: Bazy danych. Wyświetlanie SQL Query

Nowy postprzez Corvis » czwartek, 8 stycznia 2009, 18:34

O matko...

Po 1. Jakiej ty technologi używasz. Jaki silnik bazy danych ??

Po 2. http://helion.pl/ksiazki/cbu6bd.htm :roll:
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
PodziÄ™kowaÅ‚ : 80
OtrzymaÅ‚ podziÄ™kowaÅ„: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    NieznanyNieznana

Re: Bazy danych. Wyświetlanie SQL Query

Nowy postprzez Ho88it » czwartek, 8 stycznia 2009, 22:40

No co do silnika to ... freestyle. Nie mam wielkiego doświadczenia w programowaniu baz danych i kombinuje metodą prób i błędów.
Możesz coś zasugerować?
Internet Explorer to program, który służy do przeglądania internetu z twojego komputera i na odwrót.
Avatar użytkownika
Ho88it
Homos antropiczny
Homos antropiczny
 
Posty: 63
Dołączył(a): niedziela, 10 sierpnia 2008, 20:53
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: brak systemu
Kompilator: Visual Studio 2008
Visual Studio 2010
Gadu Gadu: 0
    NieznanyNieznana

Re: Bazy danych. Wyświetlanie SQL Query

Nowy postprzez Corvis » piÄ…tek, 9 stycznia 2009, 01:21

Opisz zadanie w jednym poście dokładnie a nie roztrzepałeś to na parę :)
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
PodziÄ™kowaÅ‚ : 80
OtrzymaÅ‚ podziÄ™kowaÅ„: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    NieznanyNieznana

Re: Bazy danych. Wyświetlanie SQL Query

Nowy postprzez Ho88it » piÄ…tek, 9 stycznia 2009, 10:27

Baza danych składa się z 3 tabel:

1. bazasprzętu.db
2. koneksje.db
3. materialyeksploatacyjne.db

W programie mam wyświetlić sprzęt i materiały do niego (oryginalne i zamienniki, czyli więcej jak jeden wynik) i na odwrót.
Wpisując materiał wyświetlić mi powinien sprzęt do jakiego pasuje dana część.

Program moim zdaniem wystarczy żeby wyświetlał wynik kwerendy.. ale za cholerę nie mogę tego ugryźć.
Internet Explorer to program, który służy do przeglądania internetu z twojego komputera i na odwrót.
Avatar użytkownika
Ho88it
Homos antropiczny
Homos antropiczny
 
Posty: 63
Dołączył(a): niedziela, 10 sierpnia 2008, 20:53
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: brak systemu
Kompilator: Visual Studio 2008
Visual Studio 2010
Gadu Gadu: 0
    NieznanyNieznana

Re: Bazy danych. Wyświetlanie SQL Query

Nowy postprzez Corvis » sobota, 10 stycznia 2009, 01:38

Nie wiem czemu używasz jakiś plików db ??? nie lepiej zrobić to na serwerze bazodanowym np. MySql ?? Tworzysz bazę danych , robisz strukturę łączysz się odpowiednio przez builedra z bazą i robisz wszystko co ci się podoba :) - jeżeli jesteś zainteresowany takim rozwiązaniem to mogę ci pomóc trochę. Osobiście nie bawię się w żadne plikowe bazy danych :)
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
PodziÄ™kowaÅ‚ : 80
OtrzymaÅ‚ podziÄ™kowaÅ„: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    NieznanyNieznana

Następna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 0 gości