AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBGrid-Feld bearbeiten und Feld mit Daten füllen
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid-Feld bearbeiten und Feld mit Daten füllen

Ein Thema von DADAMAN · begonnen am 27. Feb 2006 · letzter Beitrag vom 27. Feb 2006
Antwort Antwort
Seite 2 von 2     12   
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#11

Re: DBGrid-Feld bearbeiten und Feld mit Daten füllen

  Alt 27. Feb 2006, 16:07
Dein Bild zeigt leider Tabellen und keine Entitäten. Wenn die Beziehung zwischen Komponenten und Artikeln 1:n ist, dann hast du das physische Datenmodell falsch implementiert. In dem Fall müsste der Komponenten-Schlüssel als Fremdschlüssel in der Tabelle Artikel auftauchen.

Vielleicht stimmen aber auch die Tabellen und du hast nur die Beziehung falsch angegeben - sie müsste dann n:1 sein. Kannst du das noch aufklären?

marabu
  Mit Zitat antworten Zitat
DADAMAN

Registriert seit: 21. Feb 2006
Ort: Rotenburg an der Fulda
9 Beiträge
 
Delphi 6 Professional
 
#12

Re: DBGrid-Feld bearbeiten und Feld mit Daten füllen

  Alt 27. Feb 2006, 16:32
War natürlich falschrum, Sorry. Ein Artikel kann natürlich in mehreren Protokollen vorkommen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#13

Re: DBGrid-Feld bearbeiten und Feld mit Daten füllen

  Alt 27. Feb 2006, 17:18
Zuerst zu deinem Beziehungsdatentyp KOMPONENTEN - wenn BEZEICHNUNG darin die Bezeichnung des Artikels ist, dann ist sie redundant und sollte dort nicht gespeichert werden. Da du dein Grid mit einer Query füttern möchtest, diese Query update-fähig sein soll und der Benutzer die Artikelbezeichnung in der Anzeige sehen soll, sobald er eine Artikelnummer eingetragen hat, deklarierst du BEZEICHNUNG als berechnetes Feld.

Mit einem Doppelklick auf die Query-Komponente kannst du dabei auch das Feld KOMPONENTEN_ID unsichtbar machen. Sichtbar sind dann nur die Felder PROTOKOLL_ID, ARTIKEL und BEZEICHNUNG - wobei BEZEICHNUNG nicht vom Benutzer beschreibbar ist. Damit die Bezeichnung passend zur Artikelnummer angezeigt wird, musst du für das Ereignis OnCalcFields() etwas Code (drei Zeilen) schreiben. Wenn der Primärschlüssel nicht automatisch von der Datenbank beigesteuert wird, dann kannst du das im Ereignis OnBeforePost() erledigen.

Ein DBGrid ist für diese Aufgabe nicht unbedingt ideal - immerhin werden nur Schlüssel eingegeben und diese müssen auch noch aus einer definierten Vorratsmenge stammen. Aber Hauptsache es funktioniert erstmal.

marabu
  Mit Zitat antworten Zitat
DADAMAN

Registriert seit: 21. Feb 2006
Ort: Rotenburg an der Fulda
9 Beiträge
 
Delphi 6 Professional
 
#14

Re: DBGrid-Feld bearbeiten und Feld mit Daten füllen

  Alt 27. Feb 2006, 17:32
Super, ich glaube du hast mich verstanden.

Werde das morgen ausprobieren, so fern eine Sicherung meiner Datenbank dann endlich zurückkopiert wurde.
Falls ich dann noch Fragen hab, meld ich mich nochmal.

Hast mir auf jeden Fall schon viel weiter geholfen. Danke.

Und was das DBGrid angeht. Ja, ich würde das auch lieber mit anderen Komponenten lösen, aber damit dieses Programm genauso aussieht und funktioniert wie die anderen, und es soweit wie möglich Code-frei bezüglich Datenbanksachen ausfallen soll, muss ich leider darauf zurückgreifen.

Nochmal danke.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 23:36 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