AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBEdit auf Form "Abschalten" weil Feld nicht in der DB
Thema durchsuchen
Ansicht
Themen-Optionen

DBEdit auf Form "Abschalten" weil Feld nicht in der DB

Ein Thema von DelTurbo · begonnen am 28. Jan 2014 · letzter Beitrag vom 28. Jan 2014
Antwort Antwort
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.194 Beiträge
 
Delphi 2007 Architect
 
#1

DBEdit auf Form "Abschalten" weil Feld nicht in der DB

  Alt 28. Jan 2014, 08:46
Datenbank: MySql • Version: 5.0 • Zugriff über: MyDac
Hi,
ich stehe vor einem Problem. Ich habe mir eine Dialogbox gemacht wo man Vorname, Nachname, Adresse und so weiter eintragen kann. Das Gehört zu Tabelle1.

Tabelle2 ist genauso aufgebaut wie Tabelle1 plus diesen 2 Extrafeldern (VarChar(100)).

Nun wollte ich die Dialogbox für beide Tabellen nutzen. Wenn ich die beiden DBEdit Felder Disable bekommt ich eine Fehlermeldung, das die beiden Felder nicht in der Tabelle1 sind. Was ja auch stimmt.

Dann habe ich versucht die DataSource der Felder auf nil zu setzen. Das klappt auch beim ersten mal. Trage ich aber die DataSource wieder ein, und gehe auf Tabelle2, meint er das die Felder nicht in der Tabelle sind.

Nun zu meiner Frage. Wie kann ich das machen, das ich nur eine DialogBox habe, aber mit 2 unterschieldichen Tabellen arbeite??? Geht das überhaupt?

Danke im voraus
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: DBEdit auf Form "Abschalten" weil Feld nicht in der DB

  Alt 28. Jan 2014, 09:00
Wäre es nicht einfacher, die Controls erst zur Laufzeit zu erstellen und einzurichten? Dann könnte man über eine selbst definierte Formular-Property steuern, ob es diese beiden Edits geben soll oder nicht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.194 Beiträge
 
Delphi 2007 Architect
 
#3

AW: DBEdit auf Form "Abschalten" weil Feld nicht in der DB

  Alt 28. Jan 2014, 09:09
Achso, du meinst nur die beiden? Nicht das ganze Formular. Das könnte ich machen. Das ist eine Idee. Ich dachte halt, man kann das abschalten.

Ich habe es im moment so gemacht, das ich 2 Dummyfelder in der Tabelle1 habe, die zugeordnet werden. Nun muss ich aber noch einen fast gleichen Dialog machen, wo wieder ein Extrafeld enthalten ist. Das sieht dann in der DB etwas doof aus, wenn ich überall nun diese Dummys einbaue.

Aber das mit dem erstellen werde ich machen. Vielen dank!!!
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: DBEdit auf Form "Abschalten" weil Feld nicht in der DB

  Alt 28. Jan 2014, 09:49
Es ist einfacher, die Datensensitiven Eingabefelder abzuschalten weil man dazu nur wenig Code benötigt und es angenehmer ist alle Controls im Formdesigner anzulegen.
Hier mal etwas Code zu Anregung:
Delphi-Quellcode:
{
diese Funktion prüft, ob für ein bestimmte DB-Control in der angegebenen
Tabelle ein passendes Feld vorhanden ist.

Falls das Feld nicht vorhanden ist, wird das Control abgeklemmt und
inaktiv gemacht
}

function DisconnectDBControls(control:TWinControl; const tablename:string):Boolean;
var
   datafield : string;
begin
   Result := False;

   if IsPublishedProp(control, 'DataField') then
   begin
      datafield := GetStrProp(control, 'DataField');
      if not FieldExistsInTable(AdoConnection1, tablename, datafield) then
      begin
         SetObjectProp(control, 'DataSource', nil); // DataSource abklemmen
         // control.ParentColor := True;
         SetOrdProp(control, 'ParentColor', 1); // Feld grau machen
         // Hint setzen, damit man dem Anwender erklären kann dass bestimmte Felder für ihn
         // nicht verfügbar sind
         control.Hint := 'Feld "'+ datafield +'" nicht in Datenbank vorhanden';
         control.ShowHint := True;
         control.TabStop := False;
         Result := True;
      end;
   end;
end;
Die Funktion FieldExistsInTable musst du selbst bereitstellen.
Im Event FormCreate braucht man dann nur noch pro Feld eine Zeile:
Delphi-Quellcode:
// ältere Versionen der Tabelle Kundenstamm haben kein Feld Telefon2
DisconnectDBControls(DBTelefon2, 'Kundenstamm');
Wichtig ist, dass man die Funktion aufruft bevor die Query geöffnet wird.
fork me on Github

Geändert von sx2008 (28. Jan 2014 um 09:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#5

AW: DBEdit auf Form "Abschalten" weil Feld nicht in der DB

  Alt 28. Jan 2014, 10:18
Du kannst natürlich auch die Fehler in dein SELECT aufnehmen und die Controls notfalls noch disablen, aber die DataSource abzuhängen wäre dennoch besser.


Zitat:
Tabelle2 ist genauso aufgebaut wie Tabelle1 plus diesen 2 Extrafeldern (VarChar(100)).
Daß hier noch keiner nach einer Normalisierung geschrien hat?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: DBEdit auf Form "Abschalten" weil Feld nicht in der DB

  Alt 28. Jan 2014, 10:56
Redundanz muss ja nicht zwangsläufig immer falsch sein. Um das beurteilen zu können müsste man die Datenstruktur sowie die Absicht dahinter kennen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: DBEdit auf Form "Abschalten" weil Feld nicht in der DB

  Alt 28. Jan 2014, 10:56
[OT]
Zitat:
Tabelle2 ist genauso aufgebaut wie Tabelle1 plus diesen 2 Extrafeldern (VarChar(100)).
Daß hier noch keiner nach einer Normalisierung geschrien hat?
Wer datensensitive Controls nutzt, sucht bei Normalisierung auch bei der ISO nach.

[/OT]

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.194 Beiträge
 
Delphi 2007 Architect
 
#8

AW: DBEdit auf Form "Abschalten" weil Feld nicht in der DB

  Alt 28. Jan 2014, 12:03
Vielen dank für eure Hilfe. Ich werde das mal probieren.

Zum VarChar sag ich nix
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:05 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