![]() |
Re: prozeduren auslagern
Ok dann glaube ich hab ich das Konzept verstanden
Delphi-Quellcode:
Danke für den kleinen Crashkurs ist ganz einfach wenn man es so gezeigt bekommt.
unit Datenbankerzeugen;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls,DB, DBTables, ComCtrls, Buttons, ColorGrd; procedure tabelleerst(F1Tabelle1: TTable; Serverpfad: string; F10Tabelle1 :TTable); implementation //======================Benutzertabelle erstellen=============================== procedure Tabelleerst(F1Tabelle1: TTable; Serverpfad:String; F10Tabelle1 :TTable); Var pfad : string; begin F1Tabelle1.close; With F1Tabelle1 Do //Tabelle erzeugen begin DatabaseName:= Serverpfad + 'Datenbank\'; //Pfad zur Tabelle F10Tabelle1.DatabaseName:= Serverpfad + 'Datenbank\'; TableName:= 'Benutzerverwaltung.DB'; TableType:= ttParadox; end; if not FileExists( Serverpfad + 'Datenbank\Benutzerverwaltung.DB') then begin With F1Tabelle1 Do begin with FieldDefs Do //Datenfelder erzeugen begin Clear; Add('Nr.',ftAutoInc,0,True); Add('Benutzername',ftString,30,True); Add('Passwort',ftString,30,False); Add('Administrator',ftboolean,0,False); Add('Versuche',ftInteger,0,False); Add('Gesperrt',ftString,5,False); end; with IndexDefs do //Index Schlüssel erzeugen begin Clear; Add('Nr','Nr.',[ixPrimary, ixUnique]); // Primär Index end; CreateTable; begin //User erzeugen F1Tabelle1.Open; //Tabelle öffnen zum Schreiben F1Tabelle1.Edit; F1Tabelle1['Benutzername']:= 'Admin'; F1Tabelle1['Passwort']:= '123'; F1Tabelle1['Administrator']:= True; F1Tabelle1['Versuche']:= 0; F1Tabelle1['Gesperrt']:= 'Nein'; F1Tabelle1.Post; //Eintrag übernehmen F1Tabelle1.Close; //Tabelle schließen end; end; end; F1Tabelle1.Active:= True; //Tabelle1 auf Form1 aktivieren F10Tabelle1.Active:= True; //Tabelle1 auf Form10 aktivieren end; end. Was wären den dies Überarbeitungen ich bin nämlich dabei den Code zu verbessern Zitat:
|
Re: prozeduren auslagern
Ich finde es unlogisch, dass du gleichzeitig auf TTable verschiedener Formulare zugreifen musst.
Aber da ich dein Programm nicht kenne, kann ich auch nichts genaues dazu sagen, zumal mir dazu auch die Zeit fehlen würde. |
Re: prozeduren auslagern
Ja das habe ich mitleiweile aus diesem Post mitbekommen und bin gerade dabei die die Komponenten von Form10 einafch auf die Table1 von Form1 zugreifen zulassen.
Somit spare ich mir einpaar Zeilen Code und Komponenten. Wie gesagt danke nochmals |
Re: prozeduren auslagern
Dann hast du uns wohl missverstanden.
|
Re: prozeduren auslagern
Wie meinst du das???
Also dadurch das ich jetzt die Table und die Datasource von der Form10 entfernt habe und alles auf die Form1 umgeleitet (Datasource und Table von Form1) habe. Ist es jetzt eindeutiger auf welche Table ich zugreife und der Code sieht jetzt so aus
Delphi-Quellcode:
Oder hab ich wirklich was falsch verstanden
unit Datenbankerzeugen;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls,DB, DBTables, ComCtrls, Buttons, ColorGrd; procedure tabelleerst(F1Tabelle1: TTable; Serverpfad: string);// hier ist es auch kürzer implementation //======================Benutzertabelle erstellen=============================== procedure Tabelleerst(F1Tabelle1: TTable; Serverpfad:String); begin F1Tabelle1.close; With F1Tabelle1 Do //Tabelle erzeugen begin DatabaseName:= Serverpfad + 'Datenbank\'; //Pfad zur Tabelle // hier fällt die Zeile weg TableName:= 'Benutzerverwaltung.DB'; TableType:= ttParadox; end; if not FileExists( Serverpfad + 'Datenbank\Benutzerverwaltung.DB') then begin With F1Tabelle1 Do begin with FieldDefs Do //Datenfelder erzeugen begin Clear; Add('Nr.',ftAutoInc,0,True); Add('Benutzername',ftString,30,True); Add('Passwort',ftString,30,False); Add('Administrator',ftboolean,0,False); Add('Versuche',ftInteger,0,False); Add('Gesperrt',ftString,5,False); end; with IndexDefs do //Index Schlüssel erzeugen begin Clear; Add('Nr','Nr.',[ixPrimary, ixUnique]); // Primär Index end; CreateTable; begin //User erzeugen F1Tabelle1.Open; //Tabelle öffnen zum Schreiben F1Tabelle1.Edit; F1Tabelle1['Benutzername']:= 'Admin'; F1Tabelle1['Passwort']:= '123'; F1Tabelle1['Administrator']:= True; F1Tabelle1['Versuche']:= 0; F1Tabelle1['Gesperrt']:= 'Nein'; F1Tabelle1.Post; //Eintrag übernehmen F1Tabelle1.Close; //Tabelle schließen end; end; end; F1Tabelle1.Active:= True; //Tabelle1 auf Form1 aktivieren // hier fällt die Zeile weg end; |
Re: prozeduren auslagern
Noch besser wäre es die Datenbankobjekte und die Prozedur in eine Datenmodul auszulagern.
|
Re: prozeduren auslagern
Was ist den ein Datenmodul??
Sorry das ich so dumm Frage aber wer nicht fragt, lehrnt auch nichts dazu. |
Re: prozeduren auslagern
Datei - Neu - Datenmodul
Da kommen alle nicht-visuellen DB-Controls rein. |
Re: prozeduren auslagern
Ein Datenmodul ist eine nichtvisuelle formularänhliche Klasse, die dazu dient Datenbankobjekte aufzunehmen.
|
Re: prozeduren auslagern
Was ist den der vorteil vom Datenmodul
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 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