CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Podłączanie bazy danych MySQL do Fast Report

Podłączanie bazy danych MySQL do Fast Report

Problemy związane z tworzeniem i zarządzaniem programami bazo-danowymi.
Regulamin działu


Zadając pytania dotyczące baz danych należy podawać szczegółowe informacje o bazie danych nad którą się pracuje, czyli:

  • Rodzaj serwera bazodanowego: MySql, MSSQL, Oracle itp.
  • Wersja bazy danych
  • Technologia bazodanowa używana w programie: ADO, DbExpress, InterBase
  • Komponenty użyte do zestawienia połączenia: ADOConnection, SqlConnection
  • Sposób zestawienia komponentów bazodanowych np. DataSet - DataSource - DbGrid lub DataSet - DataSetProvider - ClientDataSet - DataSource - DbGrid
  • Jeżeli używane były biblioteki innych firm niż Borland, CodeGeer i Embarcadero proszę podać ich nazwy, numer wersji i adres źródła.

Podłączanie bazy danych MySQL do Fast Report

Nowy postprzez duf » czwartek, 7 lutego 2013, 13:00

Witam, czy znajdę tu na forum kogoś z doświadczeniem w tworzeniu raportu w FR z zastosowaniem bazy danych? Próbuję podpiąć bazę danych MySQL do FR ale bez rezultatu.
Avatar użytkownika
duf
Intelektryk
Intelektryk
 
Posty: 175
Dołączył(a): czwartek, 9 października 2008, 13:02
Podziękował : 17
Otrzymał podziękowań: 2
System operacyjny: Windows 10
Kompilator: XE8
Gadu Gadu: 0
    Windows 7Firefox

Re: Podłączanie bazy danych MySQL do Fast Report

Nowy postprzez Mironas » czwartek, 7 lutego 2013, 16:00

Użyj komponentów:
frDBDataSet
- właściwość DataSet - ustaw na swój DataSet skojarzony z tabelą
frReeport
- właściwość DataSet - ustaw na 'frDBDataSet'

Dwuklik na 'frReeport' otwiera edytor wydruku. Gotowy wzór trzeba zapisać do pliku '*.frf'
Na pustej stronie umieszczasz sekcje - ikona 'Insert band'
- Raport title (nagłówek raportu)
- Raport header (nagłówki kolumn)
- Master data (rekordy tabeli)
W każdej sekcji umieszczasz pola tekstowe (memo) z odpowiednią treścią. Najważniejsze to te na 'Master data'. Przy jego dodawaniu w oknie 'Band data source' wybierasz 'Form1.frDBDataSet1'. Potem z dolnej części okna 'Insert data field' przeciągasz myszką pola na 'Master data'.
Zapisujesz, odpalasz i powinno działać.

Podgląd wydruku w programie:
KOD cpp:     UKRYJ  
  frReport1->LoadFromFile("C:\\NazwaRaportu.frf");
  frReport1->ShowReport();
 

Za ten post autor Mironas otrzymał podziękowanie od:
duf
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Podłączanie bazy danych MySQL do Fast Report

Nowy postprzez duf » czwartek, 7 lutego 2013, 18:53

Dzięki Mironas wreszcie jakieś konkrety. Przyznam, że w połowie już miałem wykonane kroki o których piszesz ale napisałeś coś czego nie robiłem i może tu jest pies pogrzebany.
Mironas napisał(a):Przy jego dodawaniu w oknie 'Band data source' wybierasz 'Form1.frDBDataSet1'.

Nie widzę takiej opcji przy dodaniu memo na MasterData poniżej jest podgląd co pojawia się po dodaniu memo
Gdybyś mógł raz jeszcze wyjaśnić swój opis:
Mironas napisał(a):Potem z dolnej części okna 'Insert data field' przeciągasz myszką pola na 'Master data'.

to będzie już super. Na razie wciskam podziękowania i czekam na odpowiedź. Dzięki.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
duf
Intelektryk
Intelektryk
 
Posty: 175
Dołączył(a): czwartek, 9 października 2008, 13:02
Podziękował : 17
Otrzymał podziękowań: 2
System operacyjny: Windows 10
Kompilator: XE8
Gadu Gadu: 0
    Windows 7Firefox

Re: Podłączanie bazy danych MySQL do Fast Report

Nowy postprzez Mironas » piątek, 8 lutego 2013, 11:22

duf napisał(a):
Mironas napisał(a):Przy jego dodawaniu w oknie 'Band data source' wybierasz 'Form1.frDBDataSet1'.

Nie widzę takiej opcji przy dodaniu memo na MasterData


Nie przy dodaniu memo na MasterData ale przy dodaniu MasterData na stronę. Być może u Ciebie będzie inaczej bo z tego co widzę masz inną wersję FR. Ja opisywałem na przykładzie wersji 2.5 z BCB6.

U mnie trzeba dla sekcji MasterData ustawić właściwość DataSource na 'Form1.frDBDataSet1' (albo na inny TfrDBDataSet). Robi się to właśnie w oknie 'Band data source' w momencie dodawania sekcji na stronę lub później w inspektorze obiektów.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Podłączanie bazy danych MySQL do Fast Report

Nowy postprzez duf » piątek, 8 lutego 2013, 14:31

No dobrze. Myślę, że ustawiłem prawidłowo a jak tworzyć zapytania do bazy SQL? W FR czy w programie głównym?
Avatar użytkownika
duf
Intelektryk
Intelektryk
 
Posty: 175
Dołączył(a): czwartek, 9 października 2008, 13:02
Podziękował : 17
Otrzymał podziękowań: 2
System operacyjny: Windows 10
Kompilator: XE8
Gadu Gadu: 0
    Windows 7Firefox

Re: Podłączanie bazy danych MySQL do Fast Report

Nowy postprzez Mironas » piątek, 8 lutego 2013, 14:49

W programie.
Tak jak pisałem: Komponent frDBDataSet, właściwość DataSet ustawiasz na swój DataSet (czyli na ten komponent w którym masz zapytanie SQL np do wyświetlenia tabeli w DBGrid).
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Podłączanie bazy danych MySQL do Fast Report

Nowy postprzez duf » piątek, 8 lutego 2013, 15:17

frDBDataSet->DataSet mam ustawiony na ClientDataSet chociaż mam też możliwość ustawienia na SQLQuery1. W frDBDataSet mam też właściwość DataSource, która jest pusta ale można ją ustawić na DataSource1 ale wtedy znika ustawienie w DataSet :D
Czyli kod w programie głównym powinien wyglądać tak:

KOD cpp:     UKRYJ  
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  SQLQuery1->CommandText = "SELECT NAZWA FROM INTR";
  frReport1->LoadFromFile("C:\\NazwaRaportu.frf");
  frReport1->ShowReport();
}
Avatar użytkownika
duf
Intelektryk
Intelektryk
 
Posty: 175
Dołączył(a): czwartek, 9 października 2008, 13:02
Podziękował : 17
Otrzymał podziękowań: 2
System operacyjny: Windows 10
Kompilator: XE8
Gadu Gadu: 0
    Windows 7Firefox

Re: Podłączanie bazy danych MySQL do Fast Report

Nowy postprzez Mironas » piątek, 8 lutego 2013, 15:29

Podstawowe pytanie: Czy Ty już otworzyłeś tabelę w swoim programie? Np czy wyświetlacz ją w DBGrid?

Jeśli TAK to jakich używasz komponentów? Bo po ClientDataSet1 to chyba nie łączysz się z MySQL.

Jeśli NIE to najpierw połączyć z bazą danych, otwórz tabele, wyświetl ją w DBGrid, modyfikuj dane a dopiero potem jak już będzie to działać to zrób pierwszy raport.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Podłączanie bazy danych MySQL do Fast Report

Nowy postprzez duf » piątek, 8 lutego 2013, 15:57

Mironas napisał(a):Podstawowe pytanie: Czy Ty już otworzyłeś tabelę w swoim programie? Np czy wyświetlacz ją w DBGrid?

Jeśli TAK to jakich używasz komponentów? Bo po ClientDataSet1 to chyba nie łączysz się z MySQL.

Jeśli NIE to najpierw połączyć z bazą danych, otwórz tabele, wyświetl ją w DBGrid, modyfikuj dane a dopiero potem jak już będzie to działać to zrób pierwszy raport.

W zdarzeniu oncklick łączę się z tabelą. Wynik łączenia widać również w DBGrid. Raport pokazuje mi 3 strony (bo tyle mam rekordów) ale nie ma nic w memo.
KOD cpp:     UKRYJ  
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  SQLQuery1->CommandText = "SELECT NAZWA FROM INTR";
  ClientDataSet1->Active = true;

  //frReport1->LoadFromFile("C:\\NazwaRaportu.frf");
  //frReport1->ShowReport();
}
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
duf
Intelektryk
Intelektryk
 
Posty: 175
Dołączył(a): czwartek, 9 października 2008, 13:02
Podziękował : 17
Otrzymał podziękowań: 2
System operacyjny: Windows 10
Kompilator: XE8
Gadu Gadu: 0
    Windows 7Firefox

Re: Podłączanie bazy danych MySQL do Fast Report

Nowy postprzez Mironas » piątek, 8 lutego 2013, 16:38

duf napisał(a):[...]ale nie ma nic w memo.

Bo w MEMO musisz umieścić odwołanie do danego pola bazy danych.

Myślę że zamiast
KOD cpp:     UKRYJ  
SQLQuery1->CommandText = "SELECT NAZWA FROM INTR";

Powinieneś wpisać zapytanie do właściwości SQLQuery1->SQL (w inspektorze obiektów), Potem dwuklik na SQLQuery1 i 'Add all fields'.
Potem otwierasz FR, dwuklik na MEMO i za pomocą właściwej ikony wybierasz odpowiednie pole. U mnie (FR 2.5) to jest ikona opisana 'Insert data field'. Na Twoich zrzutach nie widzę podobnej ikony, może jest to ikon '#'. Na koniec treść memo powinna wyglądać mniej więcej tak:
[Form1.SQLQuery1."NAZWA_POLA"]

Do czego w twoim przykładzie służy ClientDataSet1?
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Podłączanie bazy danych MySQL do Fast Report

Nowy postprzez duf » piątek, 8 lutego 2013, 18:14

Mironas napisał(a):Do czego w twoim przykładzie służy ClientDataSet1?

Nigdy się nad tym nie zastanawiałem. Gdzieś na forum znalazłem układ komponentów do prawidłowego połączenia z bazą MySQL i tak zostało.
Bazę danych udało mi się podłączyć do FR :x ale nie widać wyników w raporcie :cry: Czy trzeba programować zdarzenia OnCheckEOF w komponencie TfrxDBDataset?
Avatar użytkownika
duf
Intelektryk
Intelektryk
 
Posty: 175
Dołączył(a): czwartek, 9 października 2008, 13:02
Podziękował : 17
Otrzymał podziękowań: 2
System operacyjny: Windows 10
Kompilator: XE8
Gadu Gadu: 0
    Windows 7Firefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Bazy danych

Kto przegląda forum

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

cron