Datenbank

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Nugi89
Beiträge: 68
Registriert: Do 26. Feb 2015, 13:46

Datenbank

Beitrag von Nugi89 »

Hallo habe folgendes Problem.
Habe mit mithilfe der Lazarus-Komponenten einer Datenbank erstellt und möchte mir nun zur weiteren Bearbeitung die einzelnen Spalten Inhalte in editfelder zurückgeben lassen.

Meine Tabelle sie wie folgt aus:
PersNr Name Vorname Abteilung Stunden
1 Mustermann Max Verkauf 40
2 Breit Bernhardt Lager 38

Möchte diese Daten auslesen und in Editfelder wiedergeben und mit weiteren Daten in einem Excel Dokument ablegen.

Ich habe eine ganze weile gesucht und nix gefunden, vielleicht kann mir ja jemand hier helfen.
Danke im vorraus.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6779
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Datenbank

Beitrag von af0815 »

Nach Lazinfos googeln.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Datenbank

Beitrag von Michl »

http://alevel-computing.x10.mx/mw/index ... ial_DBEdit
http://wiki.lazarus.freepascal.org/FPSp ... rweiterung (wobei die englischen Seiten FPSpreadsheet und -Tutorial ausgefeilter sind)

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Nugi89
Beiträge: 68
Registriert: Do 26. Feb 2015, 13:46

Re: Datenbank

Beitrag von Nugi89 »

Danke hat mir sehr geholfen :D

Nugi89
Beiträge: 68
Registriert: Do 26. Feb 2015, 13:46

Re: Datenbank

Beitrag von Nugi89 »

hallo noch ne frage.
ich greife über die Dbf-komponente auf meine datenbank zu (Lazarusdatenbank). hier mein eigentliche problem, ich habe mein programm mit datenbak auf dem stick wenn ich jetzt aber mein programm auf nem anderen rechner verwenden will ändert sich ja das Laufwerk. gibt es da eine lösung den pfad so zu gestallten das ich mein programm auf jedem rechner nutzen kann ohne das der pfad geändert werden muss? Bzw irgend eine function.

ich bitte um eine schnelle lösung.
Danke schonmal im vorraus.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Datenbank

Beitrag von Michl »

Mal eine andere Frage, warum nutzt du in diesem Fall nicht TOpenDialog?! http://wiki.lazarus.freepascal.org/Howt ... nDialog/de

PS: wird auch so im DBF-Beispiel (unter Werkzeuge -> Beispielprojekte -> Addrbook) so gemacht.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Nugi89
Beiträge: 68
Registriert: Do 26. Feb 2015, 13:46

Re: Datenbank

Beitrag von Nugi89 »

ich nutze es weil ich schon bei programmstart die datenbank öffne und die daten in einer dbGrid ausgebe.
und TOpenDialog nutze ich nur wenn ich irgendwas laden möchte.

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Datenbank

Beitrag von baumina »

Wenn auf dem Stick das Programm und die Datenbank drauf ist, kannst du den Programmpfad ermitteln und anhand diesem dann den DB-Pfad erstellen. z.B. (Achtung, das ist Delphi-Code, Lazarus kann da ggf. leicht abweichen)

Code: Alles auswählen

DBName := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + 'DBName.DBF';
.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Datenbank

Beitrag von Michl »

Woher soll dein Programm wissen, dass nun gerade diese Datei geöffnet werden soll?!

Du kannst z.B. die Dateiendung mit deinem Programm verknüpfen, dann wird immer dein Programm geöffnet, wenn du den USB-Stick mit dieser in deinen Rechner steckst.

Eine unschöne Lösung wäre z.B. auch, dass du immer im gleichen Verzeichnis (oder Unterverzeichnis) deines Programms die Datei mitführst. Dann könntest du realtive Pfade nutzen. Edit: so wie das eben baumina vorgeschlagen hat.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Nugi89
Beiträge: 68
Registriert: Do 26. Feb 2015, 13:46

Re: Datenbank

Beitrag von Nugi89 »

habe das jetzt mit dem opendialog probiert und ich scheine irgendwas falsch zu machen. wenn ich die dbl-datei öffne wird mir nix in der grid zugewiesen. ich steh irgendwie aufm schlauch grade.

hab das so

Code: Alles auswählen

var
  DBName: string;
begin
  if OpenDialog1.Execute then
  begin
    DBName:= OpenDialog1.Filename;
    Dbf1.FilePathFull:= DBName; // hier wird mir ein fehler geworfen
  end;
Zuletzt geändert von Lori am Di 21. Apr 2015, 21:14, insgesamt 3-mal geändert.
Grund: Bitte den Highlighter nutzen.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Datenbank

Beitrag von Michl »

OK.

PS: Falls du Hilfe wünschst, dann poste doch etwas Code, zeige was du probiert hast und was du glaubst hätte passieren sollen. Und frage, was unklar ist.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Nugi89
Beiträge: 68
Registriert: Do 26. Feb 2015, 13:46

Re: Datenbank

Beitrag von Nugi89 »

hab ich grad beim bearbeiten^^

Code: Alles auswählen

var
DBName: string;
begin
if OpenDialog1.Execute then
begin
DBName:= OpenDialog1.Filename;
Dbf1.FilePathFull:= DBName; // hier wird mir ein fehler geworfen
end;
in DBName steckt ja dann der pfad drin und denn brauch ich doch in der Dbf-Komponente oder?
Zuletzt geändert von Lori am Di 21. Apr 2015, 21:14, insgesamt 2-mal geändert.
Grund: Bitte den Highlighter nutzen.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Datenbank

Beitrag von Michl »

Probier mal es so (ungetestet, habe kein TDbf installiert):

Code: Alles auswählen

if OpenDialog1.Execute then
  begin
    Dbf1.Close;  //Falls noch eine Datenbank geöffnet 
    Dbf1.TableName:=OpenDialog1.FileName;
    Dbf1.Open;
  end;
PS: Zum Code posten bitte Highlighter verwenden, das liest sich besser!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Nugi89
Beiträge: 68
Registriert: Do 26. Feb 2015, 13:46

Re: Datenbank

Beitrag von Nugi89 »

danke danke danke für die hilfe.
es funktioniert super

Nugi89
Beiträge: 68
Registriert: Do 26. Feb 2015, 13:46

Re: Datenbank

Beitrag von Nugi89 »

beim speichern mit savedialog ist es doch das selbe oder?
möchte dann die daten die bearbeitet bzw die hinzu kamen in eine zweite datenbank ablegen.
ich schreibe die daten in die datenbank und beim speichern soll ja in die neue dbl-datei diese daten geschrieben werden.
savetofile klappt nicht.

Antworten