Załączenie pliku bazy danych do kodu wynikowego programu

0

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.

0

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.

0

zamiast BDE użyj TClientdataset'a którego możesz zapakować danymi trzymanymi w zasobach

0

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;

0

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;
0

Jak powinna wyglądać struktura ładowanego pliku i czym go przekonwertować?

1

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;
0

Dziękuje bardzo ale bardziej mi chodziło jak przekonwertować dane co już mam w pliku csv.

1

masz procedurę CreateDataset, dodaj do niej odczyt danych z csv ich zapis do ClientDataset'u

0

Mam około 5000 tysięcy rekordów. Czy jesli zrobie wyszukiwanie z automatycznym odświeżaniem będzie to chodziło płynnie?

0

5000 rekordów w ClientDatasecie to nie jest dużo i z pewnością będzie działało szybciej niż na komponentach BDE

0

Chciał byś się podjąć zrobić prosty formularz z danymi. i polem edit gdzie bedzie przeszukiwanie bazy danych.

0

nie bardzo mam na to czas, chyba że umieścisz to w kategorii "Ogłoszenia Drobne'

0

Spróbuje na początek sam.

0

ok,dziękuje

0

Wiesz jak przeszukiwać tą bazę bo już podłączyłem bazę do dbgrid i wyświetla

0

@piter2004:
wrzuć całą bazę i aplikację

0

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)

0

a jak bym chciał przeszukać z kilku kolumn na jeden raz te same słowo?

0
clientdataset.filter := 'pole1= ''coś tam1'' or pole2=''coś tam 2'' ';
0

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.