![]() |
Datenbank: dbf • Version: ? • Zugriff über: TDBF
Problem mit zugriff auf dbf Dateien und bearbeiten.
Hallo Leute
Ich habe ein neues Projekt und zwar habe ich eine *.dbf Datei die ich mit Delphi öffnen im DBGrid anzeigen sowie editieren möchte. Nun, soweit habe ich mit TDBF und eine eine TDataSource eine verbindung aufgebaut, mit DBGrid kann ich die Tabelle auch schön anzeigen lassen :thumb: Nun die frage: Wieso kann ich keine änderungen an der Tabelle vornehmen? um diese natürchlich wieder zu speichern...? Habe festgestellt dass "TableLevel" auf 3 steht... dieser Wert lässt sich leider nicht ändern. Kann mir da jemand behilflich sein? Schon mal besten Dank:-D PS: Zum Projekt, Ziel ist es die dbf Datei aufzurufen, bearbeiten und wieder zu Speichern. Wenn in der Tabelle z.B. 100 Kunden drin stehen, so soll ein Wert von Kunde bis Kunde bearbeitet werden, zugleich soll es möglich sein z.B. ende Monat von Kunde bis Kunde (also 1-100) den Wert (Guthaben) wieder zu löschen. |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Meine bisherige Erfahrung mit TDBF ist, dass das von Dir Beschriebene problemlos funktioniert.
Der Tabellenlevel hat nichts damit zu tuen, ob man schreiben darf oder nicht, das ist (soweit ich weiß) nur eine Info zu der verwendeten dBase-Version der Tabelle. Zeig' uns bitte mal die Eigenschaften der Komponente, wie Du sie in der IDE eingestellt hast, eventuell kann man daran was erkennen. Ansonsten hänge hier bitte mal den Quelltext und die DFM an. |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
[OT]
...der übliche Hinweis. :P Zitat:
|
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Liste der Anhänge anzeigen (Anzahl: 1)
sowas?
Code:
unit WinArtikel;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, Grids, DBGrids, dbf, ExtCtrls, DBCtrls, Menus, StdCtrls, DBTables, DirOutln, jpeg, Mask; type TForm1 = class(TForm) Dbf1: TDbf; DBGrid1: TDBGrid; DataSource1: TDataSource; DBNavigator1: TDBNavigator; MainMenu1: TMainMenu; Datei1: TMenuItem; Oeffnen1: TMenuItem; Save1: TMenuItem; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Exit1: TMenuItem; GroupBox1: TGroupBox; Dbf1KUNR: TIntegerField; Dbf1KUNAM: TStringField; Dbf1KUERTRAG: TFloatField; Dbf1KUSALDO: TFloatField; Dbf1KULIMIT: TLargeintField; Dbf1KUTAGUMS: TFloatField; procedure Schliessen1Click(Sender: TObject); procedure Save1Click(Sender: TObject); procedure Oeffnen1Click(Sender: TObject); procedure Exit1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Schliessen1Click(Sender: TObject); begin close; end; procedure TForm1.Save1Click(Sender: TObject); begin saveDialog1.Execute; end; procedure TForm1.Oeffnen1Click(Sender: TObject); begin if OpenDialog1.Execute then //ShowMessage(OpenDialog1.FileName); //showmessage ('Daten wurden erfolgreich eingelesen.... oder auch nicht'); end; procedure TForm1.Exit1Click(Sender: TObject); begin close; end; end. |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Zitat:
|
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Zitat:
|
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Hallo Joachim
die dbf datei ist nicht schreibgeschützt, denn wenn ich es mit dem Formular-Experte eine verbindung aufbaue, dann klappt es mit den ändern... ich probiere gleich nochmal mit Tdbf eine komplett neue Verbindung herzustellen... Edit: Das gleiche problem.. die Einträge lassen sich nicht verändern... Hier nochmals den Code (Falls es was bringt den Code zu posten):
Delphi-Quellcode:
unit Main;
interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Menus, ComCtrls, DB, Grids, DBGrids, dbf, DBTables; type TMainForm = class(TForm) MainMenu: TMainMenu; FileNewItem: TMenuItem; FileOpenItem: TMenuItem; FileSaveItem: TMenuItem; FileSaveAsItem: TMenuItem; FilePrintItem: TMenuItem; FilePrintSetupItem: TMenuItem; FileExitItem: TMenuItem; EditUndoItem: TMenuItem; EditCutItem: TMenuItem; EditCopyItem: TMenuItem; EditPasteItem: TMenuItem; StatusLine: TStatusBar; OpenDialog: TOpenDialog; SaveDialog: TSaveDialog; PrintDialog: TPrintDialog; PrintSetupDialog: TPrinterSetupDialog; DataSource1: TDataSource; Dbf1: TDbf; DBGrid1: TDBGrid; Dbf1KUNR: TIntegerField; Dbf1KUNAM: TStringField; Dbf1KULIMIT: TLargeintField; procedure FormCreate(Sender: TObject); procedure ShowHint(Sender: TObject); procedure FileNew(Sender: TObject); procedure FileOpen(Sender: TObject); procedure FileSave(Sender: TObject); procedure FileSaveAs(Sender: TObject); procedure FilePrint(Sender: TObject); procedure FilePrintSetup(Sender: TObject); procedure FileExit(Sender: TObject); procedure EditUndo(Sender: TObject); procedure EditCut(Sender: TObject); procedure EditCopy(Sender: TObject); procedure EditPaste(Sender: TObject); end; var MainForm: TMainForm; implementation {$r *.dfm} procedure TMainForm.FormCreate(Sender: TObject); begin Application.OnHint := ShowHint; end; procedure TMainForm.ShowHint(Sender: TObject); begin StatusLine.SimpleText := Application.Hint; end; procedure TMainForm.FileNew(Sender: TObject); begin { Code zur Erzeugung einer neuen Datei hinzufügen } end; procedure TMainForm.FileOpen(Sender: TObject); begin if OpenDialog.Execute then begin //ShowMessage(OpenDialog1.FileName); //showmessage ('Daten wurden erfolgreich eingelesen.... oder auch nicht'); { Code zum Öffnen von OpenDialog.FileName hinzufügen } end; end; procedure TMainForm.FileSave(Sender: TObject); begin { Code zum Speichern der aktuellen Datei unter aktuellem Namen hinzufügen } end; procedure TMainForm.FileSaveAs(Sender: TObject); begin if SaveDialog.Execute then begin { Code zum Speichern von SaveDialog.FileName hinzufügen } end; end; procedure TMainForm.FilePrint(Sender: TObject); begin if PrintDialog.Execute then begin { Code zum Drucken von aktueller Datei hinzufügen } end; end; procedure TMainForm.FilePrintSetup(Sender: TObject); begin PrintSetupDialog.Execute; end; procedure TMainForm.FileExit(Sender: TObject); begin Close; end; procedure TMainForm.EditUndo(Sender: TObject); begin { Code zur Durchführung von Bearbeiten Rückgängig hinzufügen } end; procedure TMainForm.EditCut(Sender: TObject); begin { Code zur Durchführung von Bearbeiten Ausschneiden hinzufügen } end; procedure TMainForm.EditCopy(Sender: TObject); begin { Code zur Durchführung von Bearbeiten Kopieren hinzufügen } end; procedure TMainForm.EditPaste(Sender: TObject); begin { Code zur Durchführung von Bearbeiten Einfügen hinzufügen } end; end. |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Zitat:
|
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Muss man die Datenbank nicht erst in den Edit-Modus versetzen?
|
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Das Editieren der dbf Datei resp. Kunden kann in der Software immer nur ein Kunde editieren, ich versuche nun dies mit Delphi eine von - bis änderung zu erstellen. Desweiteren weiss ich auch nicht wie ich die von - bis Abfragen machen soll... stehe im moment voll auf dem schlauch :( Beispiel: Kunde 1 hat 10 Euro guthaben Kunde 2 hat 10 Euro guthaben Kunde 3 hat 10 Euro guthaben Nun möchte ich mit abfragen der Tabelle folgendes erstellen, mit Auswahlfeld "von Kunde" - "bis Kunde" einen neuen Wert von z.B. 30 Euro eintragen lassen. (OK drücken und der neue Wert steht im entsprechndem Feld und kann von der Software verwendet werden). siehe Bild im Anhang: |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Darfst Du in das Verzeichnis der DBF schreiben? Geht es mit anderen Programmen? Wieso nimmst Du nicht einfach EXCEL? ADO sollte auch gehen.
|
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Hast Du den Hinweis von Luckie beachtet?
Die Datenbank in den Editiermodus setzen. |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Zitat:
Excel? hmmm eine überlegung wert... |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Zitat:
Danke schon mal für eure hinweise...:thumb::thumb: |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Zitat:
Kommt denn eine Fehlermeldung? |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Das ist ja das verrückte, es kommt nicht mal ne Fehlermeldung... ich klicke im in die Tabelle rein wo der Wert steht und mehr passiert nicht... nur der Eintrag mit dem Wert wird "Blau" kann es aber nicht verändern
|
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Zitat:
Excel erstellt die Datei komplett neu, einschließlich der Felddefinitionen und die müssen nicht mit den ursprünglichen Felddefinitionen übereinstimmen. Man braucht nur in der Anzeige die Spaltenbreite zu ändern und schon hat man eine vollständig neue Tabellendefinition, mit der die Ursprungssoftware nicht unbedingt zurechtkommen muss. ADO ginge, wenn es unbedingt sein muss, aber bitte kein Excel. |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Ja richtig, die dbf Datei muss zwingend die gleichen Felddefinitionen haben ansonsten funktioniert es mit der Software nicht mehr...
Excel ist definitiv gestrichen :roll: Leider bin ich noch nicht weiter gekommen...:| |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Zitat:
Zitat:
TDBF kann kein SQL. Man kann Filter setzen. Habe mal ein Miniprogrämmelchen angehängt, das eine änderbare DBF nutzt, Filter setzen kann und für die gefilterten Sätze den Inhalt einer Spalte auf einen eingegebenen Wert ändern kann. (mit Delphi 7 erstellt) Um Probleme beim Öffnen und schließen von Tabellen zu verringern, empfiehlt es sich, die Tabellen in der Entwicklungsumgebung geschlossen zu halten und erst beim Programmstart zu öffnen und beim Programmende zu schließen. TDBF ist nicht multiuserfähig, wer soll dann beim Ändern "gewinnen"? Die Entwicklungsumgebung oder die aus der Entwicklungsumgebung heraus gestartete Exe? |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Liste der Anhänge anzeigen (Anzahl: 1)
Hey suuuper :-D:thumb::thumb:
genau das was ich brauche... nur kommt leider bei einsetzten eines betrages folgende Fehlermeldung (siehe anhang). Auch habe ich in den Projektoptionen die Verzeichnisse geändert.. waren auf Lfw E:\:-D |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Hallo,
TDbf hat ein ReadOnly-Flag, setze das mal nach dem Open auf False. Heiko |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Zitat:
Die Tabelle ist im Programm (bei mir) änderbar (habe die Nonsensdaten im Grid in die Tabelle gedaddelt). Bitte überprüfe mal, ob Du wirklich an der Stelle, an der die Datei liegt, auch Schreibrechte hast. Das ReadOnly-Flag steht in meinem Progrämmelchen auf false und kann von daher (eigentlich) nicht die Fehlerursache sein. Nimm bitte mal die von mir erstellte Exe und die DBF und kopiere die beiden in ein Verzeichnis, in dem Du Schreibrechte hast (andernfalls dürfte das Kopieren ja nicht funktionieren). Dann starte dort die EXE, sie sucht die DBF im gleichen Verzeichnis. Ist die DBF dann auch ReadOnly? Ok, die Projektoptionen waren bei mir halt so, wie bei mir Delphi eingerichtet ist, da hab' ich vor'm Zippen nix geändert :-( |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Zitat:
|
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
ja, steht in meinem Quelltext auf false.
Habe es gerade nochmal ausprobiert. Die Exe oben aus dem Zip und die Kunden.dbf aus dem Zip in ein eigenes Verzeichnis entpackt, Exe ausgeführt, Werte geändert. Funktioniert. Exe beendet und neu gestartet. Geänderte Werte sind vorhanden. |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
@nahpets
habe es so gemacht wie Du soeben beschrieben hast... die kunden.dbf und die exe in ein separates verz. kopiert und gestartet, klappt soweit:thumb: Wenn ich nun dein Programm im Delphi aufmache und mit F9 ausführe, schmiert alles ab... eigenartig... |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Naja, hab' halt 'ne alte Delphi Version, der Quelltext muss bei Dir nicht unbedingt compilierbar und lauffähig sein.
Die Beschreibung "schmiert ab" ist jetzt aber auch nicht unbedingt hilfreich für die weitere Fehlersuche. Präzisiere diese Aussage doch bitte. |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Hallo,
von welcher Delphi-Version reden wir denn (der Thread-Ersteller möge bitte antworten)? Und welche TDBF-Version wird verwendet? Ältere Versionen haben Probleme mit Delphi ab D2010. Ansonsten mal das komplette Projekt zippen + eine Bsp.-DBF, die sich nicht beschreiben läßt und hochladen. Heiko |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ich habe auch eine "alte" Version 7.0... ich werde mal alles zippen und hochladen:thumb: Edit: Sooo liebe Leute, habe alles gezippt und eine Kunden.dbf liegt auch bei:thumb: Delphi Version 7.0 TDBF Version: 6.9 Im Grid brauche ich vorerstmal nur die: - KUNR - KUNAM - KULIMIT |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Du hast AutoEdit in der DataSource1 auf False gesetzt. Standard ist True und damit geht es auch.
|
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Hallo Jaenicke
Ich habe soeben wie Du beschrieben hast, AutoEdit in der DataSource1 auf True gesetzt. F9 gedrückt und kann immer noch keinen Wert ändern... was mach ich bloss falsch??? |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Hallo,
wie änderst du überhaupt was ? Wie gehst du vor (F2?), einfach lostippen?) Heiko |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Zitat:
Habe dein Projekt genommen - Pfad in Dfb1 auf meinen Ablageort der dbf geändert - Dfb1 auf true gesetzt -> Datenmenge wird im Grid angezeigt (nach BugFix in dbf_memo.pas) - AutoEdit des DataSource1 auf true - F9 - Mit der Maus ins Grid - Aus einer 10 ein 20 gemacht - Mit der Maus auf ein anderes Feld geclickt (dann wird erst der Wert gespeichert) - Programm beendet - Programm neu gestartet -> Wert war immer noch 20 Somit geht alles, wie es soll... Hinweis.. Da keine xMemo-Datei dabei war, musste ich in 'dbf_memo.pas' einen kleinen BugFix einbauen (TDBF V.6.9.1), er vesuchte dort dem Header (war nil) wg dBase III einen Wert zuzuweisen. Mein Delphi ist zwar D6, sollte aber hier keinen Unterschied machen! |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
BTW:
Zitat:
|
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Zitat:
meinst Du wenn die exe ausgeführt wird? ich klicke mit der Maus ins Feld und versuche einen neuen Wert einzugeben... |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Hallo HolgerX
ich könnte schreien vor....:evil: Ich habe es genau gleich gemacht, schritt für schritt wie Du so schön beschrieben hast... Projekt wird ausgeführt, keine Fehlermeldungen, alles ok soweit. Mit der Maus ins Grid, auf die 10 drauf, die 10 wird "Blau" hinterlegt und nichts lässt sich verändern. aha dachte ich evtl. rechts den Zahlenblock von der Tastatur verwenden, kontrollieren ob Numlock eingeschaltet ist.. alles eingeschaltet:thumb: Wert verändern? ne nichts da... es ist zum heulen. Gut hab ich mir noch gedacht, evtl. hat mein Delphi probleme, so werde ich morgen mal Delphi komplett löschen und neu Installieren... es kann doch nicht sein:shock: |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt komme ich der sache näher...
Einen versuch noch, habe komplett eine neue Anwendung aufgemacht. - Tdbf drauf - Datasource drauf - DBGrid drauf - Tdbf Filepfad angegeben - TableName also Kunden.dbf ausgewählt - Auf Datasource, bei Dataset Dbf1 ausgewählt - DBGrid, Datasource und DataSource1 ausgewählt - F9 gedrückt und folgende Fehlermeldung erschein... (siehe anhang) Ich glaube nun das meine Tdbf einfach nicht mehr richtig Funktioniert:shock::shock::shock: Was meint Ihr? |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Versuche es bitte einmal mit der aktuellsten TDbf Version. Da hat sich ja doch offenbar einiges getan, wenn auch auf den ersten Blick vor allem die Struktur der Verzeichnisse etc.
Ein Unterschied ist, dass du die Memo-Datei (.dbt) nicht mitgeliefert hattest. Dadurch haben wir die einfach ausgeklammert bzw. ich habe sie leer neu erstellt, aber es wäre möglich, dass das Problem genau dort liegt. Ich werde es einmal in einem virtuellen PC mit Delphi 7 ausprobieren, das habe ich hier nicht mehr drauf und deshalb hatte ich Delphi 10 benutzt. |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Zitat:
Hatte ich das nicht geschrieben (BugFix) ? Ich hatte mir die V 6.9.1 und auch die neuste 7er Version herunter geladen, in beiden ist es zur AccessViolation gekommen, weil keine Memo-Datei dabei ist. Deshalb einfach mal kurz im Source geachaut und den Bug gefixt: in dbf_memo.pas in procedure TMemoFile.Open;
Delphi-Quellcode:
Da die Datei fehlt, wird hier versucht etwas zu öffnen, was nicht da ist (keine Fehlermeldung 'Fehlende Datei').
// read header
HeaderSize := 512; // determine version if (FDbfVersion = xBaseIII) and Assigned(Header) then PDbtHdr(Header)^.bVer := 3; VirtualLocks := false; Jedoch ohne Datei auch keinen Header und somit kommt es zu der AccessViolation beim Zugriff auf den 'Header'. Nach dem Fix lässt sich deine Datenbank-Datei wie beschrieben öffnen. Ach ja, bei der 7er Version musste ich noch einige Zeilen in dbf_common.inc auskommentieren, da hier mein D6 meckerte. Mit der 6.9.1 brauchte ich das nicht machen. |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
Zitat:
Ich dachte, da du nicht den letzten Beitrag geschrieben hattest, muss ich das nicht extra dazu schreiben. |
AW: Problem mit zugriff auf dbf Dateien und bearbeiten.
;)
Ich wollte ja auch nur die Details des Bugs nochmals angeben und dass dieser auch in der aktuellsten Version vorhanden ist. Dann kann er die Source von seiner Version fixen und nochmals testen.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz