Duplikaty w bazie Paradox

0

Witam.
Próbuję wyszukać duplikaty i wsatwić do nowej tabelki lecz nic mi z tego nie wychodzi

    Add('INSERT INTO Dubel (Pole1)');
    Add('SELECT Pole1');
    Add('FROM Tabela');
    Add('GROUP BY Pole1');
    Add('HAVING COUNT (Tabela.Pole1)>1)');

Jak to poprawić ?

0

paradox nie jest zbyt mądrą bazą :P. Tak tego nie zrobisz. Musisz pobrać wszystkie niepowtarzające się wartości (SELECT DISTINCT * FROM tabela) i potem w pętli (while not Tabela.EoF do) powstawiać je do nowej tabeli (INSERT INTO tabela(pole) VALUES(wartosc))

0

Misiekd:
Z tego co widzę, orientujesz się w bazach danych.

Nie mogę się dowiedzieć jaka baza byłaby najlepsza oparta na SQL.
Chodzi mi o bazę lokalną (Paradoxy mam przerobione i tworzenie tych indexów wszystkich - makabra z sypaniem się tego wszystkiego :/)

Przeniosłem się na SQL i zrobiłem też bazę na serwerze InterBase.
No dobra tylko taka baza zaczyna tworzyć problemy gdy muszę ją przenieść na innego kompa i potem połączenie z serwerem.

Pytanie brzmi:
Jaką baze polecasz jako bazę lokalną ale na podstawie SQL?
Jakie komponenty (z której zakładki? ADO?) trzeba wykorzystać?
Gdzie stworzyć tabele (w Database Desktop?)?

Za wszelkie odpowiedzi dzięki z góry [browar]

0
Do Misiekd napisał(a)

Nie mogę się dowiedzieć jaka baza byłaby najlepsza oparta na SQL. Chodzi mi o bazę lokalną (Paradoxy mam przerobione i tworzenie tych indexów wszystkich - makabra z sypaniem się tego wszystkiego :/)

Co do sypania się indexów w paradoxie to rzeczywiście zmora :). Jeśli pisząc lokalną masz na myśli bazę, która obsługuje TYLKO jednego klienta na raz to np. firebird embedded - jest to SQL "pełńą gębą", a do pracy potrzebuje 1 dll + 1 plik bazy (jeśli chcesz sortować i indexować po polskich znakach to jeszcze 2 dodatkowe dll). Inna możliwość to SQLite - też 1 dll + 1 plik bazy

Przeniosłem się na SQL i zrobiłem też bazę na serwerze InterBase. No dobra tylko taka baza zaczyna tworzyć problemy gdy muszę ją przenieść na innego kompa i potem połączenie z serwerem.

Może sprecyzuj gdzie dokładnie leży problem przy przenoszeniu na inny komp

Pytanie brzmi:
Jaką baze polecasz jako bazę lokalną ale na podstawie SQL?

napisz coś więcej - czy praca w sieci (kilku klientów i wydzielony serwer) czy lokalnie (TYLKO jeden)

Jakie komponenty (z której zakładki? ADO?) trzeba wykorzystać?

zależy od bazy :)

Gdzie stworzyć tabele (w Database Desktop?)?

zależy od bazy :)

0

Generalnie chcę zapomnieć o paradoxach, dBase'ach i innych tandetach, bo jak zobaczyłem ile mi narobił plików gdy zaczęłem tworzyć indexy do poszczególnych kolumn to się załamałem :/

Zatem wszystko to chcę zastąpić ładnym i zgrabnym pliczkiem bazy na którym będę sobie operował językiem SQL.

Chcę robić bazki na 1 kliencika :) Np. na mój komputer. Ale podkreślam, że tylko i wyłącznie na SQL, ponieważ chcę sobie ten język utrwalać w kompilatorze.

Przenosząc bazę na innego kompa (tzn. program i plik z bazą) mój problem właśnie polega na tym, że nie wiem które pliki DLL kopiować na kompa, gdzie będzie program działał (instalki programów robię w InnoSetup 5 PL jeśli to coś pomoże, stamtąd przynajmniej silnik BDE instalowałem).

Miśkud: :)
Chodzi mi o to aby robić bazy danych jednostanowiskowe oparte na SQL.
Aby nie trzeba było się łączyć z jakimiś serwerami np. IB w przypadku przeniesienia programu na innego kompa i gdy nawet przy wcześniejszym projektowaniu programu. Czyli tak jak się robi na np. Paradoxach (instalując jedynie silnik BDE na docelowym kompie), tak tutaj chcę kokoRZystaćystać z SQL (dodać tylko te biblioteki DLL).

Nie wiem z jakiej bazy skożystać i których komponentów, aby robić programy jednostanowiskowe na podstawie SQL (podkreślam, że bez rzadnych tam serwerów itd.).

Bliska przyszłość:
Nie wykluczam, że chcę robić bazy wielostanowiskowe (klient - serwer) być może na tym darmowym odpowiedniku IB czyli FB. Mój komputer były serwerem, a ludziki w sieci - klientami i u tych klientów trzeba też na pewno dołączyć jakieś DLL'ki :) Jak i skonfigurować połączenie z moim kompem (serwerem), czyli adres IP itd. A co jeśli jestem serwer, a mam LAN i tylko IP wewnętrzne? Czy będzie połączenie z bazą od klienta? Czy te moje IP ma coś wspólnego z tym?

Jaką bazę (na początek) polecasz na jeden komputer opartą na zapytaniach SQL (bez rzadnych serwerów itd.) i które komponenty używać do niej, jak i gdzie tworzyć plik z bazą? :) Dzięki za odpowiedzi :) Jeśli dalej coś nie będziesz kumał to pisz :)

0

no to może na początek tak

  1. ściagnij FB embedded
  2. wypakuj
  3. plik fbembed.dll przekopiuj do katalogu z Twoim exe i zmień jego nazwę na gds32.dll
  4. do katalogu z exe przekopiuj też firebird.msg (dobrze wiedzieć co za błedy występują :)), ib_utill.dll oraz katalog intl (to do obsługi znaków narodowych)
  5. w delphi do obsługi FB są dedykowane komponenty - IBXy.
  6. co do samego tworzenia bazy to ściągnij sobie IBExpert'a personal - darmowy program do zarządzania bazą FB/IB

jeśli będzie chciał przejść na pracę w sieci to wystarczy usunąć wszystkie dlle, zainstalować serwer i w programie zmienić adres serwera i będzie działać.

0

Już sie biorę do roboty :)

Mam teraz wielki zarys tego wszystkiego.

Dzięki Ci wielkie jeszcze raz [browar]

Jak coś zrobię to na pewno się podzielę na forum.

0

Dziwny problem:

Stworzyłem jakąś tam bazę (Local) w tym IBExpert i zapisałem ją do pliku Baza.fdb.
Potem wszedłem do Delphi aby tą bazę odczytać. Położyłem komponenty z zakładki Interbase i gdy chcę podać w komponencie IBQuery ścieżkę do pliku z bazą to mi nie widzi tego pliku tak jakby ten komponent nie obsługiwał baz z rozszerzeniem *.FDB.

Z jakim rozszerzeniem ją trzeba zapisywać, tam gdzie się podaje w Register przy DatabaseFile?

0
Firebird pytanie napisał(a)

Dziwny problem:

Stworzyłem jakąś tam bazę (Local) w tym IBExpert i zapisałem ją do pliku Baza.fdb.
Potem wszedłem do Delphi aby tą bazę odczytać. Położyłem komponenty z zakładki Interbase i gdy chcę podać w komponencie IBQuery ścieżkę do pliku z bazą to mi nie widzi tego pliku tak jakby ten komponent nie obsługiwał baz z rozszerzeniem *.FDB.

do połączenia z bazą jest IBDataBase, który to podaje się następnie we właściwościach IBQuery

Z jakim rozszerzeniem ją trzeba zapisywać, tam gdzie się podaje w Register przy DatabaseFile?

na dobrą sprawę jest to obojętne, ale przyjęło się fdb lub gdb

EDIT: może się zarejestruj na forum :>

0

Zapisując w IBExpert bazę do formatu GDB, w Delphi w komponencie IBQuery występuje mi ten błąd. Oczywiście wiem co to za błąd. Jeśli zapisuję do formatu FDB to w IBQuery tego pliku nie widac gdy chcę go otworzyć.


Error

file D:\DELPHI - SOFTWARE\BAZA\BAZA.GDB is not a valid database.

OK

Kurde nie wiem jak mam zapisywać bazę :/

P.S. Później sobie rega zrobię.

0

poczytaj to od tego miejsca "Teraz przechodzimy do Delphi i spróbujmy napisać program obsługujący naszą bazę danych."

0

Gdy tworzę bazę jako REMOTE i w gdb i fdb to w Delphi odczytuje dobrze i widzę tabelę w DBGrid.

A gdy tworzę bazę jako LOCAL w gdb i fdb to dupa. I tu i tu podaje, że nieprawidłowy plik bazy i leżę na łopatkach ;(

Może ten IBExpert Personal jest tylko dla Remote? :)

Co mogę zatem robić źle?

0

u mnie tam wszystko działa
masz przykład, w archiwum masz też screena jak tworzyć nową bazę w IBExpercie

0

U mnie też już działa. Miałem konflikt między Delphi 7 ENT i Delphi 8 NET, którego musiałem odinstalować.

Teraz na Delphi 7 dobrze działa :) Twój przykład też dużo wniósł.
Tylko przy tworzeniu bazy mam zaznaczone aby potem ją zarejestrował.
Gdy to odznaczę to nie widzę swojej bazy i nie wiem jak się z nią połączyć, dlatego ją muszę rejestrować. Ogólnie wszystko śmiga już :)

0

Troszkę mój temat poszedł w innym kierunku, ale to dobrze.
Zainteresowałem się tym i od razu napotkałem na problem.
Wszystko jest ładnie na Local. Lecz mi zależy na umieszczeniu bazki na kompie w sieci.
Przy próbie utworzenia bazy na innym kompie mam komunikat:
"Nie można nawiązać połączenia ponieważ komputer docelowy aktywanie go odmawia."
Mój komp na XP, komp w sieci WIN2000.

0

trzeba odblokować na docelowym kompie port 3050 tcp

0

Dzięki Misiek, port odblokowałem lecz problem pozostał.
Może robię coś nie tak. Ale po kolei.
Na kompie_2 (XP) zainstalowałem i uruchomiłem http://prdownloads.sourceforge.net/firebird/Firebird-1.5.3.4870-0-Win32.exe
Przy pomocy IBExpert tworze nową baze ( wszystko to z kompa_2 ), katalog udostepniony wszytko OK.
Przechodzę do kompa_1 i także z IBExpert próbuję utworzyć bazę na komp_2 i niestety tu d...a.
http://img117.imageshack.us/img117/1756/ib12ad.jpg
http://img106.imageshack.us/img106/821/ib22qk.jpg
Nie wiem dlaczego w ( drugi obrazek ) podaje C:\Baza..

Może znajdziesz chwilkę.

0

A dodałeś plik firebird.msg do folderu z swoją bazą?

0
  1. To nie są DBFy - tu nie musisz (a wręcz nie powinieneś) udostępniać pliku bazy - to załatwia serwer
  2. zarówno przy połączeniu lokalnym jak i zdalnym podaje się ścieżkę do bazy bezwzględną (ew. alias ale to jeśli masz zdefiniowane aliasy w pliku aliases.conf)
    czyli jeśli masz bazę na kompie 10.0.0.4 w katalogu c:\baza\nowa.gdb to ścieżkę do bazy podajesz c:\baza\nowa.gdb niezależnie od tego, na którym kompie się chcesz podpiąć

i jeszcze uwaga co do Client Library File (czyli pliku gds32.dll) - przy instalacji FB pytał Ci się, czy skopiować ten plik do windows\system32 (ew. windows\system na Win < 2000). Jeśli ją tam skopiowałeś to jako ścieżkę do tego pliku podaj po prostu gds32.dll (bez katalogów), jeśli nie to skopiuj ją tam ręcznie i też podaj samo gds32.dll. Tak jak masz teraz powoduje, że IBExpert kożysta z innego gds32.dll a aplikacja z innego (tego z windows\system32)

PS. Na stronie FB jest coś takiego jak Quick Start - polecam chociaż przeglądnąć

0

Jescze raz dzięki Misiek, pomogło.
Znasz może jakiś wygodny programik do edycji baz, poza IBExpert ?

Andrzej

0
freno napisał(a)

Jescze raz dzięki Misiek, pomogło.
Znasz może jakiś wygodny programik do edycji baz, poza IBExpert ?

Andrzej

IBExpert to wg mnie najlepsze narzędzie do FB/IB w ogóle, a już na pewno z darmowych.
Jeśli jednak chcesz zobaczyć coś innego to jeszcze np. IBConsole, coś od EMS'u no i na googlach pewnie jeszcze inne znajdziesz

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