![]() |
Array in einer Access Tabelle speichern
Hallo,
hat jemand eine erprobte Lösung für mein Anliegen, ein Array aus einer Maske in eine Access Tabelle abzulegen ? Hier die Definition der Maske : object paClient: TPanel Left = 0 Top = 32 Width = 507 Height = 406 Align = alClient TabOrder = 1 object dbgrdMAMonat: TDBGrid Left = 1 Top = 1 Width = 505 Height = 404 Align = alClient DataSource = dsMAMonat Font.Charset = ANSI_CHARSET Font.Color = clWindowText Font.Height = -13 Font.Name = 'Arial' Font.Style = [] Options = [dgEditing, dgTitles, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit] ParentFont = False TabOrder = 0 TitleFont.Charset = ANSI_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -13 TitleFont.Name = 'Arial' TitleFont.Style = [] OnColExit = dbgrdMAMonatColExit Columns = < item Expanded = False FieldName = 'MandantNr' Visible = False end item Expanded = False FieldName = 'PersonalNr' Visible = False end item Color = clBtnFace Expanded = False FieldName = 'Monat' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -13 Font.Name = 'MS Sans Serif' Font.Style = [] ReadOnly = True Title.Alignment = taCenter Width = 100 Visible = True end item Color = 15786144 Expanded = False FieldName = 'GrundlohnS1' Title.Alignment = taCenter Title.Caption = 'Grundlohn S1' Width = 90 Visible = True end item Color = 15786144 Expanded = False FieldName = 'GrundlohnS2' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -13 Font.Name = 'MS Sans Serif' Font.Style = [] Title.Alignment = taCenter Title.Caption = 'Grundlohn S2' Width = 90 Visible = True end item Color = 10547440 Expanded = False FieldName = 'Sollzeit' Title.Alignment = taCenter Width = 100 Visible = True end item Color = 11595968 Expanded = False FieldName = 'ZuschlagAkto' Title.Alignment = taCenter Title.Caption = 'Zuschläge Akto' Width = 100 Visible = True end> end end Ciao Alf :bounce1: |
Hallo gfaw,
die dfm Datei die du gepostest hast zeigt u.a. ein Datenbankgrid an, das die Datenmenge anzeigt, die über die DataSource MaMonat verbunden ist. Wenn du über das Abspeichern eines Array sprichst, meinst du dann diese Datenmenge oder den aktuelle Datensatz dieser Datenmenge oder was genau? Was ist MaMonat? Ist das eine durch eine Query erzeugte Datenmenge oder eine Tabelle, und aus welcher Datenbank (Paradox, Access) stammt diese Datenmenge? |
Guten Morgen, Mr. Spock,
ich möchte das gesamte angezeigte Feld mit allen Spalten und Reihen in einer DB speichern. Dies in unterschiedlichen Feldern, damit man sie auch wiederfindet. Sollte ich hierzu eine weitere Tabelle einrichten ? Ciao Alf |
Hallo gfaw,
leider ist mir immer noch nicht klar, was du machen willst. Du redest von "Feld". Ein Feld in der Datenbankwelt beschreibt in der Regel eine "Spalte" in einer Datenbanktabelle. Du schreibst jetzt das gesamte Feld mit allen Spalten und Reihen. Wenn du mit Feld das DBGrid meinst und dort alle Reihen und Spalten ansprechen willst, so hast du die gesamte Datenmenge (Tabelle oder Ergebnis einer Query). Beschreibe bitte noch einmal: 1. Was willst du kopieren (und warum)? 2. Was ist MaMonat? Ist das eine durch eine Query erzeugte Datenmenge oder eine Tabelle, und aus welcher Datenbank (Paradox, Access) stammt diese Datenmenge? |
Hallo, Dr. Spock,
nochmal zum Mitschreiben: in meinem Display kommen für jeden Monat einige Spalten, die genauso wiedergefunden werden sollen, also Personalnummer, Grundlohn 1 und 2, Sollzeit und Akto - Zuschläge. Wenn man nun mit Personalnummer und Monat sucht, sollten die anderen Werte zur Verfügung stehen. Alles klar ? Ciao Alf |
Hallo gfaw,
ich will dich wirklich nicht ärgern, aber ich kappier das nicht :nerd: . Ich habe sogar mitgeschrieben :mrgreen: , aber mit jeder Antwort tauchen neue Fragen auf. Einen Versuch wage ich noch. Zitat:
Zitat:
Zitat:
Zitat:
|
Hi, Dottore Spock,
ist mein Mail mit dem Screen angekommen ? Ist nun alles klar ? Ciao Alf |
Hallo gfaw,
:cry: ich kappiers nicht, sorry. Die DFM Datei ist angekommen. Sie ist ohne die dazugehörige PAS natürlich nicht direkt als Form anzeigbar. Trotzdem habe ich sie mal analysiert. Diese DFM stimmt aber nicht mit deiner oben gezeigten überein... Ich gebe aber noch nicht auf :shock: . Also lass mich noch einmal versuchen dein Problem mit meinen Worten darzustellen: Du siehst ein Formular auf dem Bildschirm. Dort sind Daten in einem Grid dargestellt. (Stimmt das soweit?) Diese Daten stammen entweder aus einer Abfrage an eine Datenbank (Query) oder ist die Anzeige einer Tabelle einer Datenbank :!: Es geht zunächst darum festzustellen, ob es sich bei den angezeigten Daten um eine Ergebnismenge einer Abfrage oder um eine Tabelle handelt. So die Daten sind also sichtbar und liegen in einer Datenbank! Was willst du jetzt tun? Versuche es mir mal so zu erklären, als ob ich 8 Jahre alt wäre :mrgreen: oder ist das hier "Verstecke Kamera" und ihr wollt mich nur prüfen :?: |
Hallo gfaw,
ich habe jetzt mal den Code analysiert. Etwas geizig bist du schon :mrgreen: . Die beiden Dateien allein, die ja nur den MDIChild Anteil zeigen sind schon schwer in einen Zusammenhang zu bringen. Aber Geiz ist ge.. :shock: Deine Frage hätte man ohne den Code weder verstehen, noch beantworten können. Dein Programm erstellt mehrere Stringgrids. In die so entstehenden Felder kann man manuel Werte eintragen. Diese willst du jetzt komplett speichern. Dazu musst du tatsächlich zunächst eine Tabelle anlegen, die die Felder enthält, die du speichern willst, also: Mitarbeiternummer (ich nehme an, dass diese im Hauptformular festgelegt wird und dann wahrscheinlich für den ausgewählten MA das MDIChild erzeugt wird), dann würde ich das Datum speichern und nicht wie angezeigt Kalenderwoche und Tag, schließlich von1, bis1, von2, bis2 und Ges. Nach anklicken des Save Buttons, läufst du durch die Stringgrids und speicherst die Werte. Dabei legst du pro Tag einen Eintrag an. |
Hallo, MrSpock,
super ! Schlau erkannt und schon gelöst ! Wie kann ich nun dann einen bestimmten Eintrag finden , sagen wir mal den 3. eines Mitarbeiters (also März) ???? Ciao Alf |
Hallo gfaw,
deine Datenbank sollte den Primärschlüssel MANr (Mitarbeiternummer) + Datum haben, da ja pro Mitarbeiter und Datum maximal ein Eintrag vorkommen kann. Wenn du den Kalender darstellst, solltest du mit FindNearest den Eintrag suchen, der als erstes im angezeigten Zeitbereich liegt:
Delphi-Quellcode:
Dann kannst du in einer Schleife die Daten auslesen:
Table1.FindNearest([aktMA, StartDatum]);
Delphi-Quellcode:
Suchst du nur einen speziellen Eintrag, kannst du FindKey benutzen:
while Not Table1.EOF and
(Table1MANr.Value = aktMA) and (Table1Datum.Value <= EndDatum) do begin { Zelle finden } { Werte eintragen } Table1.Next; end;
Delphi-Quellcode:
if Table1.FindKey([aktMA, SuchDatum]) then
{ Eintrag existiert und ist ausgewählt } else { Kein Eintrag für diesen MA für dieses Datum }; |
Hallo, MrSpock,
hat geklappt !! Vielen Dank ! Ciao Alf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:49 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