AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Tabelleninhalt in Checklistbox anzeigen

Tabelleninhalt in Checklistbox anzeigen

Ein Thema von needatip · begonnen am 20. Okt 2004 · letzter Beitrag vom 25. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2   
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#1

Tabelleninhalt in Checklistbox anzeigen

  Alt 20. Okt 2004, 22:32
Hallo, ich stehe vor folgendem Problem.

Ich möchte in einer Kundendatenbank diverse Kategorien mit abspeichern.
d. h. in einer eigenen Tabelle sind die div. Kategorien abgelegt - z. B. Bau,Metall,Holz usw.
Diese sollen dann in einer Eingabemaske einem Kunden zugeordnet werden können.
Es wäre am einfachsten, wenn das über eine Checklistbox geht.
Zu einem Kunden können aber auch mehrere Kategorien gehören. (m:n - Beziehung)

Kann mir jemand helfen dies zu realisieren ?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Tabelleninhalt in Checklistbox anzeigen

  Alt 20. Okt 2004, 23:25
Hallo needatip,

wo genau brauchst du Hilfe. Willst du wissen wie man einen Eintrag in eine Listbox schreibt? Willst du wissen wie man auf eine Datenbanktabelle zugreift (dann sag uns noch welche DB und ggf. welche Komponentensammlung du nutzt)?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Tabelleninhalt in Checklistbox anzeigen

  Alt 21. Okt 2004, 09:44
Hab mich zu ungenau ausgedrückt.
Benutze Paradox Datenbanken.
Habe 2 Tabellen; eine davon enthält die Adresse und die andere unterschiedliche Branchen.
Nun habe ich eine Eingabemaske erstellt, die auf der einen Seite die Adressdaten enthält und auf der anderen sollen die jeweils zugehörigen Branchen in einer Checklistbox angekreuzt werden.
Die Datenbankanbindung über die Table-Komponente funktioniert ja.
Nur wie stelle ich es an, dass die zu einer bestimmten Adresse die jeweiligen Branchen in einer Checklistbox angezeigt werden.
Oder gibt es vielleicht eine elegantere Lösung hierzu, als diese in einer Checklistbox anzeigen zu lassen ?
Hab mir halt die vorgestellt, weil man hier nur die entspr. Haken setzen muss.
Diese sollen dann in der Branchen Tabelle gespeichert werden.
Gibt es so was wie eine DBCheckListBox ?
Ich hoffe, dass ich es nun besser erklären konnte.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Tabelleninhalt in Checklistbox anzeigen

  Alt 21. Okt 2004, 13:22
Hallo needatip,

das sind zwei Probleme. Zunächst einmal willst du jeder beliebigen Adresse m verschiede Branchen aus der Branchentabelle zuordnen. Das macht man in der Regel über eine dritte Tabelle. Nenne die dritte Tabelle einfach AdressenBranchen. Diese hat nur 2 Felder, nämlich die ID der Adresse und die ID der Branche. Beide Felder zusammen bilden den Schlüssel. Alternativ dazu kannst du noch eine eigene ID in der dritten Tabelle definieren, die den Schlüssel darstellt.

Jetzt könntest du in deinem Formular einfach eine Master-Detail Verbindung herstellen, wobei der Master die Adresstabelle ist und die neue AdressenBranchen Tabelle die Detaildatensätze zur Verfügung stellt. Über einen Lookup zeigst du aber nicht die ID der Branche, sondern die Bezeichnung an. Die Anzeige über eine Checklist ist natürlich auch eine gute Lösung. Dazu fügst du zunächst alle möglichen Branchen als Items ein. Dann gehst du durch die Detail Tabelle und stellst fest, welche Branchen für diese Adresse bereits eingetragen sind und markierst diese in der ChecklistBox. Bei jeder Änderung in der Checklistbox fügst einen Datensatz in die Detailtabelle ein oder löscht den entsprechenden Eintrag. Eine DBCheckList bietet sich hier nicht an, weil dieses nur den Zustand eines Feldes darstellt, der in der Regel ein Boolscher Wert ist.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Tabelleninhalt in Checklistbox anzeigen

  Alt 21. Okt 2004, 14:29
OK, vielen Dank,
den Lösungsweg hab ich verstanden, hab aber noch einige Fragen dazu.
Soll ich in der AdressenBranchen-Tabelle einen zusammengesetzen Schlüssel (Adr_ID + BR_ID) definieren?
Kannst du mir noch genau angeben wie das mit der Master/Detailverbindung genau funktioniert ?

Hab jetzt folgende 3 Tabellen:

1. Tabelle Adressen
Nr : Zähler
Name : String

2. Tablelle AdressenBranchen
Nr : Zähler
Adr_ID : LongInt
Bra_ID : LongInt

3. Tablle Branchen
Nr : Zähler
Gruppe : Integer
Bez : String

Was stelle ich genau bei MasterSource in welcher Tabelle ein.

Wei mache ich es dann mit dem Lookup ?

Für ein paar mehr Details wäre ich dir sehr dankbar.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Tabelleninhalt in Checklistbox anzeigen

  Alt 21. Okt 2004, 15:08
Hallo needatip,

zunächst musst du für Tabelle AdressenBranchen noch einen SekundärIndex definieren. Nenne ihn "nachAdressen" und wähle das Feld Adr_ID aus.

Jetzt packst du 3 TTable Objekte auf dein Formular und 2 Sourcen. Verbinde die 3 Tabellen Objekte mit je einer Tabelle. Setze jetzt MasterSource von TabAdrBra auf SrcAdressen (DataSource auf die Adressentabelle). Wähle MasterField aus und selektiere dort zunächst den neuen Index "nachAdressen", den du mit dem Nr Feld aus Adressen verbindest. Wenn du jetzt noch 2 DBGrids auf das Formular packst und mit SrcAdressen bzw. SrcAdrBra verbindest, kannst du nach dem Öffnen der Tabellen schon einmal sehen, wie die Verbindung funktioniert.

Füge über den Feldeditor alle Felder von Adressen und AdressenBranchen hinzu. Klicke mit der rechten Taste im Feldeditor der Tabelle TabAdrBra und wähle "Neues Feld": Name = Branchen, Typ = (gleicher Typ wie Bez in Tabelle Branchen), Größe (wie Bez in Branchen), FeldTyp = Nachschlagen, Schlüsselfelder = Adr_Br, Datenmenge = TabBranchen, Schlüssel = Nr, ErgebnisFeld = Bez.

Jetzt setzt du noch die Eigenschaft Visible von den Feldern aus TabAdrBra auf false, die nicht angezeigt werden sollen. Und FERTIG!
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Tabelleninhalt in Checklistbox anzeigen

  Alt 21. Okt 2004, 18:54
Super,
bin jetzt schon einen riesen Schritt weiter;
Aber wie man die Branchen dann in einer Checklisbox auswählen kann, könntest du mir noch verraten.
Und wie verknüpft man die dann ?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Tabelleninhalt in Checklistbox anzeigen

  Alt 21. Okt 2004, 19:43
Hallo needatip,
zur Initialisierung der Checklistbox läufst du z.B. beim OnCreate des Formulars durch die Branchentabelle und fügst alle Einträge zur Items Eigenschaft hinzu. Das DataSource Object, dass der Adressen Tabelle zugeordnet ist, zeigt an, wenn ein anderer Datensatz aktiviert wird und zwar über sein OnDataChange Event. In diesem Fall läufst du durch die Detailtabelle TabAdrBra und aktivierst für alle gefundenen Einträge die entsprechende CheckBox in der CheckBoxList, damit sind diese beiden Elemente zunächst synchronisiert. Jetzt musst du nur noch auf das OnClickCheck Event der CheckListBox reagieren und die Änderung, die der Benutzer in der CheckListBox durchgeführt hat in die TabAdrBra Tabelle übernehmen.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Tabelleninhalt in Checklistbox anzeigen

  Alt 21. Okt 2004, 22:31
Tausend Dank erstmal,
werde das gleich mal probieren.
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Tabelleninhalt in Checklistbox anzeigen

  Alt 23. Okt 2004, 13:30
Hat alles geklapt, nur mit der letzten Problematik komm ich noch nicht ganz klar.
Wie setzt man den Haken in der CheckListBox beim Durchlaufen der TabAdrBra ?
Und wie sieht die OnClickCheck Routine aus ?
Wie aktualisiere ich dann die TabAdrBra Tabelle ?

Kannst du mir hier vielleicht nochmals behilflich sein ?
Vielleicht ein paar Codeschnipsel oder so.

Besten Dank im voraus.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:28 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