Jak napisać bazę danych?

0

Witam.
Programuję w Delphi już od jakiegoś czasu ale kompletnie nie mam pojęcia o bazach danych. Potrzebuję napisać bazę danych, która będzie zawierała wiele pól tekstowych (ok. 40 typu TEdit lub TMemo) i jedno pole TImage. Korzystałem z kreatora ale tam mogę wybierać tylko predefiniowane bazy typu animals.dbf, gdzie jest tylko kilka pól i nic więcej nie mogę dodać. Jak z tego wybrnąc i napisać swoją bazę, gdzie "zespoły" różnych pól byłyby podzielone na zakładki? A jak z dodawaniem rekordów a zwłaszcza pola TImage. Z góry serdecznie dziękuję za pomoc... robiw

P.S.
Baza ma być napisana "charytatywnie" dla szpitala dziecięcego

0

Wnioskujac z tego o co sie pytasz to na delphi nie znasz sie kompletnie (taka przykra prawda) wiec lepiej popros kogos w Off Topic, zeby ci napisal ten nieszczesny program. Np mnie ;)

0

Witaj.
Może i nie znam się kompletnie, jak uważasz, ale napisałem już kilka "prostych" aplikacji (mój prosty komponent TGphLamp na 4programmers). Ja po prostu nie mam punktu zaczepienia do napisania bazy danych, gdyż nigdy takowej nie pisałem. Wystarczy podpowiedzieć a napiszę sam :-) a potem Ci ją pokazę :-() robiw

0

OK sorry, troche za mocna cie objechalem. Najltwiejszym sposobem bedzie uzycie do tego plikow *.ini i dynamicznie tworzonych kompnentow. Lub jezyka "HOL" (eh ta samoreklama):

http://4programmers.net/view.php?id=405

stworz np obiekt 'record', wiec dodawanie bedzie wygladalo mniej wiecej tak:

[code]record;imie=janek;nazwisko=kowalski;wiek=12 etc[/code]

Co do dynamicznych komponentow, to powinienes zrozumiec z tego artykulu, lub poszukaj gdzies na tej stronie (pewnie duzo tego)

Pozdrowienia

0

Super ale nie tak chciałem to zrobić. Oczywiście można po prostu stworzyć odpowiedni rekord a potem skojarzyć z nim plik typu file of nasz rekord itp itd ale nie oto chodzi. Chodzi mi o to aby zrobić to jak najprościej. Zauważyłem, że korzystając z komponentów DBEdit, DBMemo, DBNavigator itd to po prostu nic mnie nie obchodzi struktura pliku i programowanie jego obsługi. To po prostu samo działa tylko skąd zdobyć lub jak zrobić odpowiedni wejściowy plik typu *.dbf. Chcę to zrobić jak najmniejszym nakładem sił. A może się mylę...Ściągnij sobie mój TGphLamp...robiw

0

Stworzenie tego moim sposobem trwalo by mniej niz ta "rozmowa" trwa :/ Ale jesli skoro chcesz to zrobic tak jak Ty mowiles to ja ci niestety nie pomoge... nigdy sie nie bawilem kontrolkami DB

Pozdrowienia

0

http://www.delphi.host.sk/pokaz.php?show=artykuly
Na samym dole masz sześć artykułów o bazach danych może to ci pomoże.

Zajrzyj też tu: http://4programmers.net/Forum/viewtopic.php?id=39582 i tu: http://4programmers.net/Forum/viewtopic.php?id=42462, a przede wszystkim: Delphi\Help<b>del5dbd.hlp</b> !!

0

robiw - żaden wejściowy plik typu *.dbf. "animals.dbf" ma takie rozszerzenie bo pochodzi z bazy dBase, ale już "biolife.db" to plika z bazy Paradox.
Zatem najpierw musisz mieć jakikolwiek serwer bazy danych. Albo komercyjny (niech Ci ktoś to kupi), albo jakąś darmówkę (uwaga nie wszystkie darmówki można wykorzystywać komercyjnie, choć są i takie które pozwalają na tworzenie aplikacji dla ograniczonej liczby klientów np.5).
Z Twoim Delphi jest aplikacja SQL Explorer. Otwórz ją i zrób:

  1. utwórz bazę (kliknij Object->New z menu)
  2. wybierz typ bazy (STANDARD=Paradox - dla poczotkującego jest dobra, ale raczej do zastosowań lokalnych)
  3. wybierz nazwę Aliasu (bedziesz się przez to odwoływał w programie, tak jak do animals.dbf odwołujesz się najpierw do aliasu DBDEMOS - a on pobiera tablice, które są w nim)
  4. wybierz katalog w którym będą Twoje tablice (dBase i Paradox każdą tablicę trzymają w osobnym pliku)
  5. zapisz bazę (kliknij Object->Apply)

A potem to już tylko SQL. Musisz znać jakieś podstawy SQL bo bez tego nie tylko nie utworzysz tablic, ale i nie wypełnisz ich danymi.

Albo możesz użyć DBD32.exe czyli Database Desktop. Plik mieści się w katalogu [Program Files/Common Files/Borland Shared/Database Desktop]. Tam masz też plik helpa DBDDESK.HLP z podstawami SQL (np. funkcje SELECT, INSERT, UPDATE, DELETE, CREATE TABLE itp.).

Jak otworzysz Database Desktop to żeby stworzyć 1 tablice zrób:
1.File->New->Table i wybierz jej typ np. Paradox7
2.Wstaw odpowiednie nazwy pól (Field Name) ich typ, rozmiar i określ czy pole jest kolumną kluczową tabeli (czyli niepowtarzalną).
Jeśli kilka pól jest kluczowych to niepowtarzalna musi być ich konfiguracja
3. jak chcesz wstawić Type to kliknij prawym klawiszem na typ polu i wyświetli Ci się lista (Alfa - pole znakowe; Numer - liczba; Date,Time - czyli data i czas; @(Timestamp) - data i czas razem; Memo - duże pole tekstowe (nie mylić z TMemo delphowym); Logical - True lub False; Graphic - jakiś obrazek; +(Autoincrement) - wartośćbędzie się samoczynnie zwiększała o 1 (dobre jako klucz główny); Binary, Bytes - jakieś dane bitowe, może też tu być obrazek
4. Dla każdego pola możesz wskazać
a) Required Field - czyli pole wymagane jeśli wstawiasz rekord (wszyskie pola kluczowe są wymagane)
b) minimum, maximum i default value - czyli ograniczenia oraz wartość domyślną, która będzie wstawiana w pole jeśli dodawany rekord nie będize tego pola wypełniał
5. zapisz tablice za pomocą Save As (nadaj nazwę tablicy np. MojaTablica oraz wybierz Alias - czyli bazę do której tablica należy) i kliknij zapisz. (jak wskażesz tu Display table to od razu Ci się wyświetli)

Potem możesz:

  1. modyfikować strukturę tablicy (Table->Restructure)
  2. przeglądać rekordy (praca w trybie Table->View Data) i przechodzić po tablicy
  3. modyfikować dane, czyli przechodzić w tryb edycji (Table->Edit Data)
    a) dodawać - Insert
    b) usuwać - Delete
    c) modyfikować - wprowadzać nowe dane
    Wszystkie potrzebne klawisze wyrzucono na pasek

To tyle na początek

0

Oczywiście skoro jak piszesz, zajmujesz się Delphi, możesz napisać sobie swoją "bazę danych". Ja na dłuższą metę zrezygnowałem z baz, bo dręczyła mnie ich szybkość przy dużych operacjach obliczeniowych. Zrobiłem więc sobie record taki jak chciałem no i zrobiłem listę dwukierunkową ze strażnikami. Jak siądziesz nad tym 10 minut i oprogramujesz ją porządnie to będzie hulać aż miło. U mnie śmiga aż strach patrzeć. Kontrolki wykorzystujesz zwykłe : ) No i nie masz problemu z komercyjnością. A i zadowolenie wielkie : )

Naprawdę polecam.

0

Oczywiście skoro jak piszesz, zajmujesz się Delphi, możesz napisać sobie swoją "bazę danych". Ja na dłuższą metę zrezygnowałem z baz, bo dręczyła mnie ich szybkość przy dużych operacjach obliczeniowych. Zrobiłem więc sobie record taki jak chciałem no i zrobiłem listę dwukierunkową ze strażnikami. Jak siądziesz nad tym 10 minut i oprogramujesz ją porządnie to będzie hulać aż miło. U mnie śmiga aż strach patrzeć. Kontrolki wykorzystujesz zwykłe : ) No i nie masz problemu z komercyjnością. A i zadowolenie wielkie : )

Naprawdę polecam.

b0bik co ty wygasujesz!!! 8-0
Jaka to "baza danych"? Toż to tylko symulacja jednej tablicy. Oczywiście, że możesz utworzyć kilka list (czyli kilka pseudotablic), ale już trochę musisz pokombinować żeby w ten sposób utworzyć coś w stylu tablic master/detail (przynajmniej jeden z elementów twojego musi wskazywać inną listę).

A co powiesz o przeszukiwaniu kilku tablic naraz. [???]
A co powiesz o wprowadzaniu danych do tablic typu master/detail. [???]
A co powiesz o indeksach, które tak możesz stworzyć, że select będzie Ci "bzykał" momentalnie nawet dla dużych tablic.
A co powiesz na tablicę o np 500 000 elementów (czy twoja lista nie spowolni działania). [???]
A co powiesz jak tak duża tablica będzie złączona z drugą równorzędną (czyli typu one-to-one). [???]

A w ogóle to gdzie Ty trzymasz te swoje dane, w jakim formacie (pewnie jakimś tekstowym) i jak je zabezpieczasz. Gdzie temu do bazy danych. Takie rzeczy to robiło się pod koniec latach 70-tych ubiegłego wieku, kiedy próbowano jakoś zapamietać duże ilości danych w sensownym ustawieniu. Potem powstały pierwsze bazy i tamtym już nikt się nie zajmuje (od czasu do czasu przyda się w programie, ale nic więcej).
Więc nie myl pojęć !!!!!!!!!!!!!!!!!!! [krzyk]

0

A nie lepiej zrobić to na Apache + PHP + jakiśSQL(my, postgre) + przeglądarka_internetowa_jako_interface?

Zastanawia mnie też, czy tego typu działanie nie wymaga posiadania komercyjnej licencji na Delphi...

0

Drogi kolego a czy ja gdziekolwiek powiedziałem o tym że to rozwiązanie jest lepsze od baz danych ? ? To co piszesz jest prawdą ale jest inny aspekt (który brałem pod uwagę) - konkretne zastosowanie ! Nie zawsze trzeba się porywać na bazy danych jeśli to ma być mały program. Wiążą się z tym przecież konieczność instalacji odpowienich driverów na docelowym komputerze (np BDE) a przy moim rozwiązaniu jest to zbędne. Nie zawsze również trzeba szyfrować owe dane. Co do ilości danych to jestem bardziej przekonany do rozwiązania listowego, zdaje sobie sprawę że wynika to zapewne z mojego braku dogłębnej wiedzy o używaniu baz danych, ale na moje potrzeby mi to wystarcza. Wczytanie pliku z 15000 rekordów trwa niecałe 30 sekund przy warunku niepowtarzalności jednej z kolumn i całej procedurze validacji każdego wiersza pod kątem poprawności. Może nie są to dane imponujące, ale dla mnie to w zupełności wystarcza. Poza tym weź pod uwagę aspekt częstokroć wspominanej "komercyjności".

No to tyle !

A tak w ogóle to chyba nie bez powodu użyłem znaku " przy terminie baza danych !

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