AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit zugriff auf dbf Dateien und bearbeiten.
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit zugriff auf dbf Dateien und bearbeiten.

Ein Thema von Duffy Duck · begonnen am 26. Jan 2016 · letzter Beitrag vom 16. Feb 2016
Antwort Antwort
Seite 6 von 7   « Erste     456 7      
Duffy Duck

Registriert seit: 22. Feb 2005
56 Beiträge
 
Delphi 7 Enterprise
 
#51

AW: Problem mit zugriff auf dbf Dateien und bearbeiten.

  Alt 4. Feb 2016, 13:22
Oooooh woooow
Is ja der Hammer, da merkt man den unterschied...

ich werde mich mal an die Arbeit machen und alles so anpassen wie Du mir empfohlen hast...

Muss jetzt leider zur Arbeit, werde aber sobald als möglich mein vorhaben hier nochmals schildern...
  Mit Zitat antworten Zitat
Duffy Duck

Registriert seit: 22. Feb 2005
56 Beiträge
 
Delphi 7 Enterprise
 
#52

AW: Problem mit zugriff auf dbf Dateien und bearbeiten.

  Alt 10. Feb 2016, 22:06
Hallo Leute

nach ein paar Tagen abwesenheit melde ich mich wieder
Bin im meinem Projekt ein wenig weiter gekommen. Habe es so wie mir "nahpets" empfohlen hat meinen Code bereinigt und den Buttons und Editfelder mit Namen versehen

Jetzt zum eigentlichem, nahpets Du hast doch auf Seite 2 doch ein Miniprogramm geschreiben vo die Tabelle gefiltert wird. Das ist doch genau das was ich brauche...
Was ich jetzt nicht verstehe ist, im Editfeld (bei mir vonGast) hast Du im Objektinspektor bei Text folgendes reingeschrieben:
KUNR > 1 and KUNR < 4

wie bekomme ich es nun hin, genau diesen befehl über die Editfelder (vonGast und bisGast) zu Steuern?
Genaugenommen sollte nicht ein "fester Wert" drin stehen, sondern ich möchte eine Eingabe machen z.B. vonGast 3 bisGast 7...

bin so Frei und poste den Code nochmals:

Danke

Code:
unit Main;

interface

uses
  SysUtils, Windows, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Menus, ComCtrls, DB, Grids,
  DBGrids, dbf, DBTables, XPMan, jpeg, ToolWin, RpRender, RpRenderPDF,
  RpDefine, RpRave, RpCon, RpConDS, ImgList, FMTBcd, SqlExpr;

type
  TMainForm = class(TForm)
    MainMenu: TMainMenu;
    FileExitItem: TMenuItem;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    EdLimitMax: TEdit;
    BtnOK: TButton;
    Dbf1: TDbf;
    XPManifest1: TXPManifest;
    EdLimitNull: TEdit;
    BtnLoeschen: TButton;
    GroupBox1: TGroupBox;
    LabvonGast: TLabel;
    LabbisGast: TLabel;
    vonGast: TEdit;
    bisGast: TEdit;
    BtnFilter: TButton;
    GroupBox2: TGroupBox;
    LabLoeschen: TLabel;
    LabEintragen: TLabel;
    Timer1: TTimer;
    StatusBar1: TStatusBar;
    OpenDialog1: TOpenDialog;
    Oeffnen1: TMenuItem;
    RvRenderPDF1: TRvRenderPDF;
    RvDataSetConnection1: TRvDataSetConnection;
    RvCustomConnection1: TRvCustomConnection;
    RvProject1: TRvProject;
    Drucken1: TMenuItem;
    PrintDialog1: TPrintDialog;
    Dbf1KUNR: TIntegerField;
    Dbf1KUNAM: TStringField;
    Dbf1KUANRED: TStringField;
    Dbf1KUFIRMA: TStringField;
    Dbf1KUSALDO: TFloatField;
    Dbf1KULIMIT: TLargeintField;
    ImageList1: TImageList;
    Query1: TQuery;
    procedure FormCreate(Sender: TObject);
    procedure FileExit(Sender: TObject);
    procedure BtnOKClick(Sender: TObject);
    procedure BtnLoeschenClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Oeffnen1Click(Sender: TObject);
    procedure Drucken1Click(Sender: TObject);
    procedure EdLimitMaxKeyPress(Sender: TObject; var Key: Char);
    procedure vonGastChange(Sender: TObject);
    procedure EdLimitMaxChange(Sender: TObject);
    procedure BtnFilterClick(Sender: TObject);
    procedure bisGastChange(Sender: TObject);

end;

var
  MainForm: TMainForm;

implementation

{$r *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);
// Datum und Uhrzeit in der Statusleiste
begin
  Statusbar1.Panels[1].Text:=TimeToStr (now);
  Statusbar1.Panels[2].Text:=DateToStr (now);
end;

procedure TMainForm.FileExit(Sender: TObject);
// Programm beenden
begin
  dbf1.Close;
  application.Terminate;
end;

procedure TMainForm.BtnOKClick(Sender: TObject);
// Guthaben für alle Gäste auf einmal setzen
begin
    dbf1.First;
  while not dbf1.EoF do begin
    dbf1.Edit;
    dbf1.FieldByName('KULimit').AsString := edlimitMax.Text;
    dbf1.Post;
    dbf1.Next;
 end;
end;
procedure TMainForm.BtnLoeschenClick(Sender: TObject);
//Guthaben für alle Gäste auf einmal löschen
begin
    dbf1.First;
  while not dbf1.EoF do begin
    dbf1.Edit;
    dbf1.FieldByName('KULimit').AsString := edLimitNull.Text;
    dbf1.Post;
    dbf1.Next;
  end;
end;

procedure TMainForm.Timer1Timer(Sender: TObject);
//Timer für Datum und Uhrzeit
begin
  Statusbar1.Panels[1].Text:=DateToStr (now);
  Statusbar1.Panels[2].Text:=TimeToStr (now);
end;

procedure TMainForm.Oeffnen1Click(Sender: TObject);
begin
   dbf1.Close;
   if OpenDialog1.Execute then begin
     dbf1.TableName := OpenDialog1.FileName;
   end;
   dbf1.Open;
end;

procedure TMainForm.Drucken1Click(Sender: TObject);
//Tabelle Drucken über Rave Reports
begin
   RvProject1.Open;
   RvProject1.Execute;
end;

procedure TMainForm.EdLimitMaxKeyPress(Sender: TObject; var Key: Char);
//Guthabenfeld nur Zahlen möglich
begin
     if NOT (Key in [#08, '0'..'9']) then
    Key := #0;
end;

procedure TMainForm.vonGastChange(Sender: TObject);
//Filter Button wird eingeschaltet sobald Zahl in vonGast Feld eingegeben wird
begin
      btnFilter.Enabled:=true;
end;

procedure TMainForm.EdLimitMaxChange(Sender: TObject);
//OK Bestätigen Button wird eingeschaltet sobald im EdLimitMaxfeld eine Eingabe erfolgt
begin
      btnOk.Enabled:=true;
  end;

procedure TMainForm.BtnFilterClick(Sender: TObject);
//Ausführen des Filter im dbgrid
begin
    dbf1.Filter :=vonGast.Text;
    dbf1.Filter :=bisGast.Text;
    dbf1.Filtered := not dbf1.Filtered;
end;

procedure TMainForm.bisGastChange(Sender: TObject);
begin

end;

end.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
972 Beiträge
 
Delphi 6 Professional
 
#53

AW: Problem mit zugriff auf dbf Dateien und bearbeiten.

  Alt 11. Feb 2016, 04:37
Hmm..

In Filter musst Du einen zusammengebauten string packen...

Delphi-Quellcode:
  dbf1.Filtered := false;
  // Prüfen der Edits..

  if PruefungOK then begin
    dbf1.Filter := 'KUNR > ' + vonGast.Text + ' and KUNR < ' + bisGast.Text;
    dbf1.Filtered := true;
  end;
Bitte vorher die Eingaben auf Gültigkeit prüfen, sprich dass es sich um Zahlen handelt und die Eingabefelder nicht leer sind..
  Mit Zitat antworten Zitat
Duffy Duck

Registriert seit: 22. Feb 2005
56 Beiträge
 
Delphi 7 Enterprise
 
#54

AW: Problem mit zugriff auf dbf Dateien und bearbeiten.

  Alt 11. Feb 2016, 11:27
Ok klappt fast...

habs mal so eingefügt:

Code:
 if vonGast.text='' then showmessage('Bitte Gast Nr. eingegeben!');
   begin
    dbf1.Filter := 'KUNR > ' + vonGast.Text + ' and KUNR < ' + bisGast.Text;
    dbf1.Filtered := true;
  end;
Wenn ich auf Filtern klicke, dann funktioniert es auch. Sobald ich aber die Zahl aus dem vonGast.Text oder aus dem bisGast.Text rausnehme und nochmals Filter klicke, erscheint auch die showmessage danach stürzt das Programm aber leider ab...

oh mann was habe ich nun wieder falsch gemacht?
Miniaturansicht angehängter Grafiken
aufnahme8.jpg  
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#55

AW: Problem mit zugriff auf dbf Dateien und bearbeiten.

  Alt 11. Feb 2016, 11:40
da fehlt eine "else" würde ich mal behaupten, versuchs mal so:

Delphi-Quellcode:
 if FilterText='then
   begin
   showmessage('Bitte Gast von/bis Nr. eingegeben!');
   end
 else
   begin
   dbf1.Filter := FilterText
   dbf1.Filtered := true;
   end;
Delphi-Quellcode:
function FilterText:String;
begin
  Result:='';
  if (Trim(vonGast.Text)<>'') and (Trim(bisGast.Text)<>'') then
    if IstEineZahl(vonGast.Text) and IstEineZahl(bisGast.Text) then
      Result:='KUNR > ' + vonGast.Text + ' and KUNR < ' + bisGast.Text;
end;

//IstEineZahl ist eine weiter Funktion, in der du evtl. TryStrToInt oder sowas verwenden könntest.
Ist jetzt immer noch nicht wirklich sauber, aber vielleicht ein erster Schritt.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#56

AW: Problem mit zugriff auf dbf Dateien und bearbeiten.

  Alt 11. Feb 2016, 11:48
und Filter zurücksetzen nicht vergessen
Delphi-Quellcode:
 if FilterText='then
   begin
   dbf1.Filter := '';
   dbf1.Filtered := false; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
   showmessage('Bitte Gast von/bis Nr. eingegeben!');
   end
 else
   begin
   dbf1.Filter := FilterText;
   dbf1.Filtered := true;
   end;
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Duffy Duck

Registriert seit: 22. Feb 2005
56 Beiträge
 
Delphi 7 Enterprise
 
#57

AW: Problem mit zugriff auf dbf Dateien und bearbeiten.

  Alt 11. Feb 2016, 14:47
Ich habs jetzt mal so gemacht:
Code:
procedure TMainForm.BtnFilterClick(Sender: TObject);
//Ausführen des Filter im dbgrid
begin
   dbf1.Filtered := false;
  // Prüfen der Edits..

   if vonGast.text='' then showmessage('Bitte von Gast Nr. eingegeben!')
else
   begin
    dbf1.Filter := 'KUNR > ' + vonGast.Text + ' and KUNR < ' + bisGast.Text;
    dbf1.Filtered := true;
  end;
soweit funktioniert es auch
Nur das mit dem Filter zurücksetzen habe ich nicht so ganz verstanden...
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#58

AW: Problem mit zugriff auf dbf Dateien und bearbeiten.

  Alt 11. Feb 2016, 15:05
Nur das mit dem Filter zurücksetzen habe ich nicht so ganz verstanden...
dbf1.Filtered := false;
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#59

AW: Problem mit zugriff auf dbf Dateien und bearbeiten.

  Alt 11. Feb 2016, 16:09
Nur das mit dem Filter zurücksetzen habe ich nicht so ganz verstanden...
Die Idee dahinter ist folgende:
Du hast deine Datenmenge gefilter, z.B. Gast 3-8.
Nun willst du nochmal alles sehen. Wie machst du das, wenn du den Filter nicht mehr rausnehmen kannst.

Denn wenn beide Edits leer sind und man den Filter-Button drückt würde man erwarten, dass wieder alle Daten ungefiltert angezeigt werden. Stattdessen kommt bei dir nur die Showmessage und nichts passiert.
Ralph
  Mit Zitat antworten Zitat
Duffy Duck

Registriert seit: 22. Feb 2005
56 Beiträge
 
Delphi 7 Enterprise
 
#60

AW: Problem mit zugriff auf dbf Dateien und bearbeiten.

  Alt 11. Feb 2016, 18:22
Bitte Entschuldigt
jetzt sehe ich den Wald vor lauter Bäume nicht mehr...

@Jumpy
Du hast völlig recht, es geht noch weiter... Wenn das bisGast leer lasse und ich den Filter anwende, dann stürzt es ab...
Was setze ich nun wo ein?

Mit diesem Code bekomme ich es gar nicht gebacken...:

Code:
 if FilterText='' then
   begin
   showmessage('Bitte Gast von/bis Nr. eingegeben!');
   end
 else
   begin
   dbf1.Filter := FilterText
   dbf1.Filtered := true;
   end;


function FilterText:String;
begin
  Result:='';
  if (Trim(vonGast.Text)<>'') and (Trim(bisGast.Text)<>'') then
    if IstEineZahl(vonGast.Text) and IstEineZahl(bisGast.Text) then
      Result:='KUNR > ' + vonGast.Text + ' and KUNR < ' + bisGast.Text;
end;

//IstEineZahl ist eine weiter Funktion, in der du evtl. TryStrToInt oder sowas verwenden könntest.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 7   « Erste     456 7      

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz