Czy da się dołączyć plik z bazy danych BDE do mojego programu wynikowego w delphi? Czodzi mi o to ze mam stałą bazę danych nic w niej nie modyfikuje tylko dane z bazy pobieram i wyświetlam.
Może na początek zrezygnuj z tego czegoś czym jest BDE którego nawet autor wyparł się :] Ani to przyjemne w obsłudze, ani instalacji.
Użyj czegoś z tego wieku, jak SQLite czy Firebird Embedded.
zamiast BDE użyj TClientdataset
'a którego możesz zapakować danymi trzymanymi w zasobach
Czyli dane można trzymać w resouryce a gdzie się wskazuje w kontrolce, gdzie te dane są umieszczone?
Mam bazę danych, ale dane oddzielone są ;. Czy muszę ją jakoś przekonwertować?
Np:
Adam;bogucki;41lat;
beata;bogucka;32lata;
dane musisz obrobić i zapisać do pliku który następnie dołączasz do zasobów
a w ten sposób odczytasz dane z zasobów do ClientDataset'u
lResStream := TResourceStream.Create(HInstance, aResName, RT_RCDATA);
lClientDataset:=tclientdaset.create(nil);
try
lClientdataset.LoadFromStream(lResStream);
finally
lResStream.free;
end;
Jak powinna wyglądać struktura ładowanego pliku i czym go przekonwertować?
w taki sposób możesz utworzyć plik który następnie dodajesz do zasobów :
procedure CreateDataset;
var
cds: Tclientdataset;
begin
cds := TClientDataSet.Create(nil);
try
cds.FieldDefs.Add('firstName', ftwidestring, 40);
cds.FieldDefs.Add('lastName', ftwidestring, 40);
cds.FieldDefs.Add('age', ftinteger);
cds.CreateDataSet;
cds.AppendRecord(['Jan', 'Kowalski', 55]);
cds.SaveToFile('c:\!\cds.xml', dfxml);
finally
cds.Free;
end;
end;
a tak ładujesz do clientdatasetu dane z zasobów:
procedure loadFromRes(aDataset: Tclientdataset; aResName: string);
var
lResStream: TResourceStream;
begin
lResStream := TResourceStream.Create(HInstance, aResName, RT_RCDATA);
try
aDataset.LoadFromStream(lResStream);
finally
lResStream.free;
end;
end;
Dziękuje bardzo ale bardziej mi chodziło jak przekonwertować dane co już mam w pliku csv.
masz procedurę CreateDataset, dodaj do niej odczyt danych z csv ich zapis do ClientDataset'u
Mam około 5000 tysięcy rekordów. Czy jesli zrobie wyszukiwanie z automatycznym odświeżaniem będzie to chodziło płynnie?
5000 rekordów w ClientDatasecie to nie jest dużo i z pewnością będzie działało szybciej niż na komponentach BDE
Chciał byś się podjąć zrobić prosty formularz z danymi. i polem edit gdzie bedzie przeszukiwanie bazy danych.
nie bardzo mam na to czas, chyba że umieścisz to w kategorii "Ogłoszenia Drobne'
Spróbuje na początek sam.
ok,dziękuje
Wiesz jak przeszukiwać tą bazę bo już podłączyłem bazę do dbgrid i wyświetla
@piter2004:
wrzuć całą bazę i aplikację
TClientDataset ma wbudowane mechanizmy filtrowania
clientdataset.filtered :=false;
clientdataset.filter := 'id=10';
clientdataset.filtered :=true;
opis sposobu budowania wyrażeń filtrujących znajdziesz w dokumentacji (helpie)
a jak bym chciał przeszukać z kilku kolumn na jeden raz te same słowo?
clientdataset.filter := 'pole1= ''coś tam1'' or pole2=''coś tam 2'' ';
Jęsli nie używasz LIKE, to lepiej:
clientdataset.filter := ' ''coś tam'' IN (pole1, pole2, pole3) '
jest szybsze (w teorii) i nie używa ORów
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.