Problem z wyświetleniem danych z bazy

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.

Problem z wyświetleniem danych z bazy

Nowy postprzez JotEmKa » wtorek, 7 września 2010, 00:54

Witajcie :)
Kolejny raz potrzebuję pomocy w moim programie. Chcę wyciągnąć z bazy pewne informacje i umieścić je mniej więcej w następujący sposób: Imię, nazwisko, data, zaznacz.
Problem w tym, że nie chcę, żeby była widoczna jakakolwiek linia tabeli, no i do tego nie wiem ile będzie takich wpisów. Opcja zaznacz ma być buttonem, na którym wyświetlane będzie id osoby. Zapytanie do bazy mam mniej więcej skonstruowane, ale nie wiem, co mam umieścić na formie. Zwiesiło mnie i nie mogę ruszyć.
Czy ma ktoś może jakieś ciekawe propozycje, chętnie przyjmę:)
Pozdrawiam wszystkich i miłego dnia życzę:)
"Wszyscy wiedzą, że coś nie da się zrobić. I wtedy pojawia się ten jeden, który nie wie, że się nie da, i on właśnie to coś robi."
Albert Einstein
Avatar użytkownika
JotEmKa
Bladawiec
Bladawiec
 
Posty: 32
Dołączył(a): poniedziałek, 30 sierpnia 2010, 16:09
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: Windows XP SP3
Kompilator: Borland C++ Builder 6
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z wyświetleniem danych z bazy

Nowy postprzez Corvis » wtorek, 7 września 2010, 09:14

Z tego co zrozumiałem chcesz mieć wyświetlone dane w postaci:

Imię, nazwisko, data, zaznacz <-- gdzie zaznacz to button ??? ( POCO ??? )

Wrzucasz DBGrida i w Inspektorze -> Options ustawiasz:

dgColLines = false;
dgRowLines = false;

i już nie masz lini :)

Nie kumam tylko tego pomysłu z buttonem.
"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
    Windows VistaSafari

Re: Problem z wyświetleniem danych z bazy

Nowy postprzez JotEmKa » wtorek, 7 września 2010, 11:43

Chodzi o to, że dla każdej osoby z osobna będzie można wykonać prze pomocy Buttona pewną operację.
Właśnie chodzi o to, żeby można było kliknąć na buttona przy jednej osobie i wtedy dane w bazie zostałyby zmienione.
"Wszyscy wiedzą, że coś nie da się zrobić. I wtedy pojawia się ten jeden, który nie wie, że się nie da, i on właśnie to coś robi."
Albert Einstein
Avatar użytkownika
JotEmKa
Bladawiec
Bladawiec
 
Posty: 32
Dołączył(a): poniedziałek, 30 sierpnia 2010, 16:09
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: Windows XP SP3
Kompilator: Borland C++ Builder 6
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z wyświetleniem danych z bazy

Nowy postprzez Corvis » wtorek, 7 września 2010, 11:52

Z własnego doświadczenia wiem, że dopusczanie możliwości zmiany danych poprzez Grida jest słabe bo ludzie zawsze coś schrzanią :) Edycja danych w bazie musi być robiona świadomie i potwierdzana przez użytkownika. Ale to tylko moje zdanie :)


Edit: Sposób który podałem nie zadziała.
Ostatnio edytowano wtorek, 7 września 2010, 11:57 przez Corvis, łącznie edytowano 2 razy
"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
    Windows VistaSafari

Re: Problem z wyświetleniem danych z bazy

Nowy postprzez Cyfrowy Baron » wtorek, 7 września 2010, 11:54

To co można zrobić ze StringGrid, nie zadziała z DBGrid.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z wyświetleniem danych z bazy

Nowy postprzez Corvis » wtorek, 7 września 2010, 11:56

No to Baron już odpowiedział na to pytanie :)

Więc jedyną rozsądną opcją jaka mi przychodzi do głowy to wrzucenie danych do StringGrida i obsługiwanie ich poprzez StringGrida.
"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
    Windows VistaSafari

Re: Problem z wyświetleniem danych z bazy

Nowy postprzez Cyfrowy Baron » wtorek, 7 września 2010, 12:02

Nie da się jednak połączyć obiektu StringGrid z bazą danych. To wymagałoby użycia DBGdid i przepisania całej tabeli do StringGrid. Spowodowałoby to kolejne trudności, jak chociażby aktualizacja SringGrid na bieżąco.

Jedyne rozsądne rozwiązanie to dorobienie odrębnego okna, w którym będzie się modyfikować zawartość bazy danych. Sugerowałbym wzorować się na innych podobnych programach.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z wyświetleniem danych z bazy

Nowy postprzez Corvis » wtorek, 7 września 2010, 12:06

Dokładnie tak :) też tak myślę, że lepiej edycje robić oddzielnie. Ale jak się koleżanka upiera :P to może sie pogimnastykować z StringGridem :P

Ps. TMS Software udostępnia AdvDbGrida ( komercyjne ) gdzie chyba można robić takie cuda: http://www.tmssoftware.com/site/dbadvgrd.asp
"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
    Windows VistaSafari

Re: Problem z wyświetleniem danych z bazy

Nowy postprzez JotEmKa » wtorek, 7 września 2010, 12:10

Może błądzę, ale czy można w jakiś sposób dynamicznie stworzyć te trzy labele i jednego buttona, powtórzyć operację * ilość wpisów w tabeli i uzupełnić je danymi?
"Wszyscy wiedzą, że coś nie da się zrobić. I wtedy pojawia się ten jeden, który nie wie, że się nie da, i on właśnie to coś robi."
Albert Einstein
Avatar użytkownika
JotEmKa
Bladawiec
Bladawiec
 
Posty: 32
Dołączył(a): poniedziałek, 30 sierpnia 2010, 16:09
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: Windows XP SP3
Kompilator: Borland C++ Builder 6
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z wyświetleniem danych z bazy

Nowy postprzez Corvis » wtorek, 7 września 2010, 12:15

Wszystko można tylko pytanie, poco ? :P Przy takich kombinerkach umrzesz przy zarządzaniu tym - co pisał już CyfrowyBaron.
"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
    Windows VistaSafari

Re: Problem z wyświetleniem danych z bazy

Nowy postprzez Cyfrowy Baron » wtorek, 7 września 2010, 13:54

Może błądzę, ale czy można w jakiś sposób dynamicznie stworzyć te trzy labele i jednego buttona,


Rzeczywiście błądzisz. Nie ma też większego znaczenia, czy umieścisz te komponenty na stałe, czy będziesz je tworzyć dynamicznie, ale dynamicznie tworzonymi obiektami trudniej zarządzać, szczególnie, że do dynamicznie utworzonego Buttona będziesz musiała podpiąć zdarzenie OnClick. Co do labelów, to są tylko etykiety, nie mają możliwości edycyjnych, więc pewnie chodziło Tobie o obiekty typu TEdit, a nie TLabel.

Podstawowym problemem jest to, że do tradycyjnego obiektu typy TDBGrid trudno będzie wstawić jakieś niestandardowe elementy, gdyż ten obiekt tego nie przewiduje.

Możesz spróbować tego co jest podane w serwisie Cyfrowy Baron dla StringGrid, z tą różnicą, że w StringGrid masz zdarzenie OnDrawCell pozwalające wstawiać, różne elementy do tej tabeli, a w DBGrid masz zdarzenia OnDrawColumnCell i OnDrawDataCell.

W C++Builder 2010 obiekt DBGrid posiada zdarzenie OnEditButtonClick co by sugerowało, że można do tej tabeli wstawiać jakieś przyciski i korzystać z tego zdarzenia. Nie wiem jak to działa, i czy jest dostępne w starszych wersjach środowiska. Być może Corvis będzie miał w tym przypadku coś więcej do powiedzenia.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z wyświetleniem danych z bazy

Nowy postprzez JotEmKa » wtorek, 7 września 2010, 14:06

Sprawdziłam, BCB6 też ma na DBGrid zdarzenie OnEditButtonClick. Chodziło mi o Labela, żeby tylko wpisany został tekst z bazy. Nic więcej z tym dalej nie będę robiła. Chodzi tylko o wyświetlenie, dla jakiej osoby nastąpi zmiana po kliknięciu odpowiedniego buttona.
"Wszyscy wiedzą, że coś nie da się zrobić. I wtedy pojawia się ten jeden, który nie wie, że się nie da, i on właśnie to coś robi."
Albert Einstein
Avatar użytkownika
JotEmKa
Bladawiec
Bladawiec
 
Posty: 32
Dołączył(a): poniedziałek, 30 sierpnia 2010, 16:09
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: Windows XP SP3
Kompilator: Borland C++ Builder 6
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z wyświetleniem danych z bazy

Nowy postprzez Corvis » wtorek, 7 września 2010, 14:09

Nigdy tego nie używałem i nie wiem co to jest.

Znalazłem coś takiego:

http://www.skzimmelman.com/Articles/buttongrid.htm

A co do tego zdarzenia to w Helpie jest opisane.
"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
    Windows VistaSafari

Re: Problem z wyświetleniem danych z bazy

Nowy postprzez Corvis » wtorek, 7 września 2010, 14:13

Wystarczy, że komponent: TDBText podłączysz DataSourca i ustawisz DataField.


Edit:

A jak chcesz to zrobić na zwykłym Labelu:

Kod: Zaznacz cały
Label1->Caption = DataSource->DataSet->FieldByName("Pole")->AsString;


Oczywiście możesz to zrobić tylko i wyłączenia, jak DataSet jest otwarty :)
"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
    Windows VistaSafari

Re: Problem z wyświetleniem danych z bazy

Nowy postprzez JotEmKa » czwartek, 9 września 2010, 00:44

Witajcie,
starałam się coś zrobić w tym temacie, niestety przyznać się muszę, że niewiele wskórałam.
Próbowałam użyć TDBText, ale przy rozwinięciu listy przy DataField wyskakuje mi komunikat "ADOQuery1: Missing SQL property". Nie wiem co dalej zdziałać:(
"Wszyscy wiedzą, że coś nie da się zrobić. I wtedy pojawia się ten jeden, który nie wie, że się nie da, i on właśnie to coś robi."
Albert Einstein
Avatar użytkownika
JotEmKa
Bladawiec
Bladawiec
 
Posty: 32
Dołączył(a): poniedziałek, 30 sierpnia 2010, 16:09
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: Windows XP SP3
Kompilator: Borland C++ Builder 6
Gadu Gadu: 0
    Windows XPFirefox

Następna strona

  • 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 2 gości

cron