vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
ein Form als Klasse in eine Collection 
Autor: guenni255
Datum: 02.04.20 16:55

Hallo Forum

Ich bräuchte mal etwas Starthilfe.

Ich schicke voraus das ich mich vielleicht nicht sehr professionell ausdrücke weil ich noch Einsteiger in dieser Thematik bin. Ich arbeite mit vb6.0

Mein Vorhaben:

Ich möchte Daten aus mehreren Access Tabellen in einer Jahresübersicht zusammenfassen.
Dazu möchte ich ein Klassenform entwickeln das die Daten, über Collections, in ein "MonatsForm" ausliest.
Dieses Form soll eine Klasse mit eigenen Funktionen sein die aus den Access-Daten weitere Daten ermitteln sollen. z.B. den Wochentag eines Datums aus der DB.
Dieses "Monatsform" soll dann Grundlage für jeden Monat in der Jahresübersicht sein.

Jetzt möchte ich, aus Darstellungsgründen, die 12 "Monatsform" in einer Collection zusammen stellen lassen und zusammen darstellen.
Und das ist mein Problem. Das "MonatsForm" bekomme ich hin. Aber jetzt die Zusammenstellung zur Jahresübersicht nicht. Ich habe noch nie ein OBJEKT, als das ich das MonatsForm sehe in einer Collection verwaltet.

Wie gehe ich das an?
Was muss ich in die Klasse schreiben?
Was in die Collection?
Zeile soll sein mit Übergabe eines einzigen Datums alles Auszulesen bzw. zu bestimmen

Ich hoffe ihr versteht mein Problem und könnt mir helfen.

vielen Dank im Voraus

LG Günni

Beitrag wurde zuletzt am 02.04.20 um 17:09:14 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ein Form als Klasse in eine Collection 
Autor: Wobi
Datum: 04.04.20 01:56

Hallo Günne,
so ganz verstehe ich deinen Wunsch noch nicht.
Also du hast eine Datenbank wo alle Daten z.B. eines Jahres drin stehen. Soweit so gut, über entsprechende SQL Abfragen kannst du ja auf die einzelnen Monate abfragen. (Oder halt von Datum bis Datum)

Das Formular für einen Monat hast du also hin bekommen, da ist wahrscheinlich ein Grid zur Anzeige der Daten drin, ein paar Labels, Schaltflächen, usw.

Und jetzt wird es schwierig mit dem Verständnis. Möchtest du für die Jahresübersicht 12 Formulare in einer Collection haben und die alle nacheinander oder gleichzeitig anzeigen? Oder möchtest du in einem Form summierte Werte des Jahres haben?

Für solche Sachen habe ich noch nie eine Collection von Formularen gebraucht wenn die Daten aus einer DB kommen. Das man mit SQL ganz alleine regeln. Ich habe ein Formular welches vorgeschaltet ist wo der User auswählen kann was er angezeigt bekommen möchte. (Jahresübersicht, Monatsübersicht, Quartalsübersicht, Datum von/bis usw.)

Das was er dort auswählt fließt in die entsprechende SQL Abfrage ein und im Ergebnisformular gibt es z.B. ein Grid welches dynamisch aufgebaut wird je nachdem was gefragt war. Und man kann sowohl bei der SQL Abfrage schon guppieren / sortieren, als auch dem User im Ergebnisformular noch Möglichkeiten bieten das zu verändern.

Beschreibe doch mal, wie das Ergebnis optisch aussehen soll, welche Daten angezeigt werden sollen und wie der User das bedienen können soll.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ein Form als Klasse in eine Collection 
Autor: guenni255
Datum: 04.04.20 09:08

Hallo Frank (Wobi)

erstmal vielen Dank für dein Interesse an meinem Problem.

Ich versuche mal das zu beschrieben.
Zuerst einmal, das Programm soll nur für mich sein, als Verwaltung meiner Arbeitsdaten.
Ich arbeite als Fahrzeugüberführer. Hier fallen nun folgende, für mich relevanten Daten an.
folgendes ist immer auf das Datum bezogen.
Anzahl der Einsätze (Start-Endzeit des Einsatzes und daraus resultierte Stunden.)
Anzahl der Touren (Kenndaten zu jeder Tour (Tournummer,Kennzeichen,evtl. Kennzeichen Leihwagen,Auslagen zur Tour wie Fern-und Nahverkehrstickets oder Tanken.)

Die einzelnen Daten gebe ich über entsprechende Formulare ein und kann sie pro Tag auch wieder über die gleichen Formulare darstellen.
In der Monatsansicht werden nun noch weitere Daten, die in der Collection ermittelt werden in die ich sie lesen (wie Wochentag des datums..),in einem Monatsformular zusammengestellt und dargestellt.
Die Jahresübersicht soll nun die MonatsSUMMEN (ohne Tourdaten,das wäre zuviel) neben-und übereinander gleichzeitig darstellen. Also auf die Screengröße angepasst.
Mein Gedanke geht jetzt dahin ein KlassenForm (Mittlerweile auch eher ein KlassenFrame)für die Monatssummen zu erstellen in dem alles berechnet wird. Ich dieses dann für die einzelnen Monate Instanziere und darstelle.
Eine Collection dafür möchte ich nutzen um die Sachen im Hintergrund aufzubauen und weil es meiner Meinung nach schneller geht als immer eine SQL Abfrage durchzuführen. Das habe ich bei der Erfassung der Monatsdaten gemerkt. da bin ich erst so vorgegangen.

Grundfrage ist eigentlich "wie erstelle ich eine Collection mit Objekten wie Forms oder Frames".

Vielleicht klingt das auch alles ein wenig wirr. Aber ich bin auch noch Einsteiger, gerade im Thema Collection und Klassen.

Hoffe aber konnte dir trotzdem vermitteln was ich möchte.

Ach so, und mit den erwähnten Grids kenne ich mich gar nicht aus. Bei mir gibt es nur Text und label Felder sowie commando Button. . Die kann ich auch optisch etwas aufpeppen.

LG Günni
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ein Form als Klasse in eine Collection 
Autor: guenni255
Datum: 04.04.20 11:12

Erweiterte Antwort von 9.08 Uhr
wegen der Übermittlungsgröße von 5KB auf 2 Antworten Verteilt

ein Beispiel zu meinen Vorstellungen von Klassen und Collection.

füllt DAS EINSATZFORM

Public Sub fEinsForm(datum As Date)
Dim tempcol As colEinsätze
Dim tempForm As frmEinsatz
Set tempForm = New frmEinsatz
Dim i As Integer
tempForm.datum = datum
Select Case PrgStatus
     Case "Eingabe"
          Select Case fDSvorhEinsatzPrüfen(datum)
               Case False
                    Set tempcol = fEinsatzNeu(datum)
 
               Case True
                    Select Case weitere
                         Case False
                              Set tempcol = fEinsatzVorhanden(datum)
                         Case True
                              weitere = False
                              Set tempcol = fEinsatzWeitere(datum)
                    End Select
          End Select
     Case "Ausgabe"
          If fDSvorhEinsatzPrüfen(datum) = True Then
               Set tempcol = fEinsatzVorhanden(datum)
          Else
               Exit Sub
          End If
 
End Select
 
ReDim EinsForm(tempcol.count)
For i = 1 To tempcol.count
Set EinsForm(i) = New frmEinsatz
 
With EinsForm(i)
     .EinsNr = tempcol.item(i).EinsNr
     .Formmodus = tempcol.item(i).Formmodus
     .datum = tempcol.item(i).datum
     .txtvon.Text = tempcol.item(i).EinsAnfang
     .txtbis.Text = tempcol.item(i).EinsEnde
     .txtEinsatzStd.Text = tempcol.item(i).EinsStd
 
End With
Next
 
End Sub


Beitrag wurde zuletzt am 04.04.20 um 11:13:58 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ein Form als Klasse in eine Collection 
Autor: guenni255
Datum: 04.04.20 11:13

verschiedene EINSATZFORM´S Daten als Collection

Option Explicit
Private tempcol As colEinsätze
 
Private xDatum As Date
Private xAnfang As String
Private xEnde As String
Private xStd As Double
Private xEinsNr As Integer
 
'Erstellen einer Collection für Neuen Einsatz
Public Function fEinsatzNeu(datum As Date) As colEinsätze
Set tempcol = New colEinsätze
With tempcol
     xDatum = datum
     xAnfang = "00:00"
     xEnde = "00:00"
     xEinsNr = 1
     tempcol.Add xDatum, 0, xAnfang, xEnde, xEinsNr
End With
Set fEinsatzNeu = tempcol
Set tempcol = Nothing
 
End Function
 
''Erstellen einer Collection für Vorhandene Einsätze
Public Function fEinsatzVorhanden(datum As Date) As colEinsätze
Set tempcol = New colEinsätze
Dim rsEins As DAO.Recordset
strDSQ = "SELECT * FROM Einsätze WHERE Datum=" & Format(datum, _
  "\#yyyy\-mm\-dd\#") & " ORDER BY Einsatz"
Set rsEins = DB.OpenRecordset(strDSQ, dbOpenSnapshot)
If rsEins.BOF = True And rsEins.EOF = True Then Exit Function
rsEins.MoveFirst
Do While Not rsEins.EOF
      xDatum = datum
      xEinsNr = rsEins.Fields(2)
      xAnfang = Format(rsEins.Fields(3), "hh:mm")
      xEnde = Format(rsEins.Fields(4), "hh:mm")
      tempcol.Add xDatum, 1, xAnfang, xEnde, xEinsNr
      rsEins.MoveNext
Loop
rsEins.Close
Set fEinsatzVorhanden = tempcol
Set tempcol = Nothing
 
End Function
 
'Erstellen einer Collection für weiteren Einsatz
Public Function fEinsatzWeitere(datum As Date) As colEinsätze
Set tempcol = New colEinsätze
With tempcol
     xDatum = datum
     xAnfang = "00:00"
     xEnde = "00:00"
     xEinsNr = fletzterEinsatz(datum) + 1
     tempcol.Add xDatum, 2, xAnfang, xEnde, xEinsNr
End With
Set fEinsatzWeitere = tempcol
Set tempcol = Nothing
 
End Function
Die Klasse für die EINSATZFORM Daten (vielleicht liege ich da mir der Bezeichnung KLASSE falsch)

Option Explicit
'KLASSE EINSÄTZE
'Erstellen der collectionKlasse(clsEinsätze)
Private xDatum As Date
Private xFormmodus As String
Private xEinsAnfang As String
Private xEinsEnde As String
Private xEinsStd As Double
Private xEinsNr As Integer
 
Public Property Get datum() As Date
datum = xDatum
End Property
 
Public Property Let datum(ByVal vNewValue As Date)
xDatum = vNewValue
End Property
 
Public Property Get Formmodus() As Integer
Formmodus = xFormmodus
End Property
 
Public Property Let Formmodus(ByVal vNewValue As Integer)
xFormmodus = vNewValue
End Property
 
Public Property Get EinsAnfang() As String
EinsAnfang = xEinsAnfang
End Property
 
Public Property Let EinsAnfang(ByVal vNewValue As String)
xEinsAnfang = vNewValue
End Property
 
Public Property Get EinsEnde() As String
EinsEnde = xEinsEnde
End Property
 
Public Property Let EinsEnde(ByVal vNewValue As String)
xEinsEnde = vNewValue
End Property
 
Public Property Get EinsStd() As Double
EinsStd = xEinsStd
End Property
 
Public Property Let EinsStd(ByVal vNewValue As Double)
xEinsStd = vNewValue
End Property
 
Public Property Get EinsNr() As Integer
EinsNr = xEinsNr
End Property
 
Public Property Let EinsNr(ByVal vNewValue As Integer)
xEinsNr = vNewValue
End Property
Die Collection

Option Explicit
'COLLECTION
'Erstellen der Collection zur Klasse
Private tempEinsätze As Collection
 
Public Property Get item(ByVal Index As Long) As clsEinsätze
Set item = tempEinsätze(Index)
End Property
Public Property Get count() As Long
count = tempEinsätze.count
End Property
Public Sub remove(ByVal Index As Integer)
tempEinsätze.remove Index
End Sub
 
Private Sub Class_Initialize()
Set tempEinsätze = New Collection
End Sub
 
Private Sub Class_Terminate()
Set tempEinsätze = Nothing
End Sub
Public Function Add(datum As Date, modus As Integer, Anfang As String, Ende As _
  String, EinsNr As Integer) As clsEinsätze
Dim DSnew As clsEinsätze
Set DSnew = New clsEinsätze
With DSnew
    .datum = datum
    .Formmodus = modus
          ' 0 -> ersterDS neuer tag
          ' 1 -> vorhandener DS
          ' 2 -> Weiterer DS
          ' 3 -> markierter DS
    .EinsAnfang = Anfang
    .EinsEnde = Ende
    If Anfang <> "" And Ende <> "" Then .EinsStd = fMinBerechnen(Anfang, _
      Ende) Else .EinsStd = 0
    .EinsNr = EinsNr
 
End With
tempEinsätze.Add DSnew
Set Add = DSnew
Set DSnew = Nothing
 
End Function
Hoffe ist nicht zuviel zum Übermitteln.

LG Günni
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ein Form als Klasse in eine Collection 
Autor: Wobi
Datum: 05.04.20 03:05

Hallo guenni255,
ich antworte hier mal auf alle deine Antworten zu meinem Posting.


Zitat:



erstmal vielen Dank für dein Interesse an meinem Problem.

Ich versuche mal das zu beschrieben.


folgendes ist immer auf das Datum bezogen.
Anzahl der Einsätze (Start-Endzeit des Einsatzes und daraus
resultierte Stunden.)
Anzahl der Touren (Kenndaten zu jeder Tour
(Tournummer,Kennzeichen,evtl. Kennzeichen Leihwagen,Auslagen
zur Tour wie Fern-und Nahverkehrstickets oder Tanken.)

Die einzelnen Daten gebe ich über entsprechende Formulare ein
und kann sie pro Tag auch wieder über die gleichen Formulare
darstellen.


Hmm, ich hoffe, du machst das nicht so wie ich es jetzt verstanden habe aus deiner Beschreibung.
Ich würde das so machen, dass jede Tour in der Datebank einem Datensatz entspricht (der dann eine z.B. TourID bekommt)

Dazu gehören dann im Eingabeformular (und somit der DB) mindestens folgende Felder:
Datum der Tour Auswahl, Uhrzeit Start, Uhrzeit Ende, deine Kenndaten zur Tour.

Die resultierenden Stunden, die Anzahl Touren pro Tag haben nichts in der DB verloren, das sind alles Sachen die sich automatisch durch entweder SQL Abfragen oder simple Berechnungen erledigen lassen.
Also jede Tour hat genau einen Datensatz.

Und du brauchst auch nur ein Formular für die Eingabe einer Tour.
Für die Anzeige oder nachträgliche Bearbeitung einer Tour würde ich ein zweites Formular nehmen wo du ein Datum eingeben kannst. Da werden dann alle Touren zu diesem Datum aufgelistet egal ob in Textfeldern oder einem Grid oder was auch immer, einfach das Recordset zu diesem Datum durchlaufen und die Datensätze anzeigen.

Jetzt entweder über Schaltflächen oder was auch immer auf eine bestimmte Tour zugreifen, die TourID hast du ja in der DB und du kannst diese dem ersten Formular wieder übergeben und bei Bedarf die Daten ändern.

Zitat:


In der Monatsansicht werden nun noch weitere Daten, die in
der Collection ermittelt werden in die ich sie lesen (wie
Wochentag des datums..),in einem Monatsformular
zusammengestellt und dargestellt.


Warum eine Collection? Du hast doch ein Recordset wo du sowieso jeden Datensatz des Monats durchläufst dort kannst du vor der Anzeige in deinen Textfeldern oder Labels ebenfalls z.B. den Wochentag ermitteln. Und auch Die Summen von gewünschten Kriterien in einer Variablen speichern wenn das über die SQL Abfrage zu kompliziert ist und deren Wert am Ende in einem weiteren Label ausgeben.

Zitat:


Die Jahresübersicht soll nun die MonatsSUMMEN (ohne
Tourdaten,das wäre zuviel) neben-und übereinander
gleichzeitig darstellen. Also auf die Screengröße angepasst.


Das verstehe ich jetzt auch nicht, denn die Jahresübersicht enthält ja nur 12 Werte, da braucht man nur 12 Labels oder 12 Textfelder, das passt auf jeden Screen.

Januar xxxx
Februar xxxx
......
Dezember xxxx
==============
Gesamt 2019 yyyyy

Selbst da könntest du die ganzen xxxx summieren und bei yyyy als Summe anzeigen.

Zitat:


...weil es meiner Meinung nach
schneller geht als immer eine SQL Abfrage durchzuführen. Das
habe ich bei der Erfassung der Monatsdaten gemerkt. da bin
ich erst so vorgegangen.


Das kann nicht sein, denn du hast sowieso die SQL Abfrage (brauchst nur eine) auf der dann deine Collection beruht. Und die Erfassung der Monatsdaten? Du musst nur die einzelnen Touren erfassen, die Monatsdaten ergeben sich dann automatisch. Und eine Collection ist ja wie der Name schon sagt nur eine Sammlung, aber ein Recordset ist nichts anderes, das sammelt ja auch nur Daten entsprechend der zuvor getätigten SQL Abfrage. Ich wüßte jetzt nicht was eine Collection in deinem Fall könnte was ein Recordset nicht könnte.

Zitat:


Ach so, und mit den erwähnten Grids kenne ich mich gar nicht
aus. Bei mir gibt es nur Text und label Felder sowie commando
Button. . Die kann ich auch optisch etwas aufpeppen.


Dann solltest du dich damit beschäftigen.
Klar kann man das auch mit Labels selbst darstellen, aber warum das Rad neu erfinden wenn es das schon in VB6 gibt?

Obwohl ein Grid ist ja im Endeffekt ja auch nur eine Tabelle.
Für das was du da machst bzw. was du bräuchtest würde auch Excel (mit evtl. VBA) reichen.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ein Form als Klasse in eine Collection 
Autor: guenni255
Datum: 05.04.20 09:22

Hallo Frank

Vielen Dank für deine ausführliche Antwort.
In vielen Sachen hast du Recht. Normalerweise würde Excel vollkommen ausreichen.
VB ist aber auch ein Hobby von mir mit dem ich mich schon einige Zeit beschäftige und ich immer wieder etwas zulernen kann.
Es ist schade das man hier keine Bilder (Screenshots) darstellen kann. ( wenn...wüsste ich nicht wie).
dann würdest du vielleicht besser verstehen was ich erreichen will.

jetzt zum Thema zurück:

Das verstehe ich jetzt auch nicht, denn die Jahresübersicht enthält ja nur 12 Werte, da braucht man nur 12 Labels oder 12 Textfelder, das passt auf jeden Screen.

Januar xxxx
Februar xxxx
......
Dezember xxxx
==============
Gesamt 2019 yyyyy

das ist so nicht richtig.
denn es sind mehr Daten dargestellt als ich jetzt oben beschrieben habe.Sollten ja nur Beispiele sein.
Aber die Anzahl der Daten spielt ja auch keine entscheidende Rolle. Sondern die Art wie ich Sie erfasse und verwalte. Und der Programm Aufbau. Und da bin ich eben noch Einsteiger.

Am besten gebe ich dir einfach mal ein Beispiel:

für den 01.04.20 habe ich folgende Daten

Einsatz 1 von 8.00 bis 12.00 4h werden errechnet und in Accsess Tabelle "Einsätze" abgelegt
Einsatz 2 von 12.30 bis 14.30
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ein Form als Klasse in eine Collection 
Autor: guenni255
Datum: 05.04.20 10:33

Sorry Zeitüberschreitung.
Antworte nochmal
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ein Form als Klasse in eine Collection 
Autor: guenni255
Datum: 05.04.20 12:31

Hallo Frank

Vielen Dank für deine ausführliche Antwort.
In vielen Sachen hast du Recht. Normalerweise würde Excel vollkommen ausreichen.
VB ist aber auch ein Hobby von mir mit dem ich mich schon einige Zeit beschäftige und ich immer wieder etwas dazulernen kann.
Es ist schade das man hier keine Bilder (Screenshots) darstellen kann. ( wenn...wüsste ich nicht wie).
dann würdest du vielleicht besser verstehen was ich erreichen will.

jetzt zum Thema zurück:

Zitat:
Das verstehe ich jetzt auch nicht, denn die Jahresübersicht enthält ja nur 12 Werte, da braucht man nur 12 Labels oder 12 Textfelder, das passt auf jeden Screen.

Januar xxxx
Februar xxxx
......
Dezember xxxx
==============
Gesamt 2019 yyyyy

das ist so nicht richtig.
denn es sind mehr Daten dargestellt als ich jetzt oben beschrieben habe. Sollten ja nur Beispiele sein.
Aber die Anzahl der Daten spielt ja auch keine entscheidende Rolle. Sondern die Art wie ich Sie erfasse und verwalte. Und der Programm Aufbau. Und da bin ich eben noch Einsteiger.

Am besten gebe ich dir einfach mal ein Beispiel:

für den 01.04.20 habe ich folgende Daten
in Access Tabelle "Einsätze" abgelegt
„Datum, Einsatz, von, bis, std“

01.04.20, 1, 8.00, 12.00, 4
01.04.20, 2, 12.30, 14.30, 2
Max.3 Einträge pro Tag

in Access Tabelle "Touren" abgelegt
„Datum, Tagestour, Tournummer, Leiwagen-kennz., Kdn-kennz.“

01.04.20, 1, 123456, Do-…, MK-….
01.04.20, 2, 654321, Ohne, Do-….
01.04.20, 3, 987654, ohne, SO-….
Max 10 Touren pro Tag

in Access Tabelle "Auslagen" abgelegt
„Datum, KW, Tournummer, Fernverkehr, Nahverkehr, Tanken, erstattet“

01.04.20, 13, 654321, 30.00€, 3.00€, 0.00€, j/n
01.04.20, 13, 987654, 0.00€, 0.00€, 10.00€, j/n
max 1 Datensatz je Tour.

In der Monatsübersicht werden jetzt, neben den einzelnen Tour Daten, alle möglichen zu errechnenden Daten (Wochentag für jedes Datum, Anzahl gearbeiteter Wochentage, Stunden und Einsätze an Wochentagen Mo..Di..Mi.., sowie die Summen der Auslagen, Stunden und Einsätze) dargestellt.

In der Jahresübersicht eben diese Monats Summen ohne die einzelnen Einsätze.

Außerdem führe ich ein eigenes Zeitkonto, incl. errechneten Urlaubs, über diese Daten.

Natürlich würde EIN, entsprechend gestaltetes Formular für die Eingaben reichen. Bringt aber wieder erhöhten Aufwand bei der Speicherung in verschiedenen Tabellen mit sich.

Im Grunde genommen erstelle ich mir ein Programm auf Basis des derzeitigen Wissens, guck was man verbessern oder optimieren könnte und versuche das dann umzusetzen. Nun bin ich eben beim Thema Collection und Klassen angekommen und habe festgestellt das auf dem Screen einiges bei der Darstellung schneller abläuft als vorher.

Mein Bestreben jetzt ist es halt ein Monatsform oder Frame zu entwickeln das die notwendigen Berechnungen des Monats macht und nur für andere Monate der Jahresübersicht kopiert bzw. instanziert werden muss.

Und das Programm so schnell und kurz, und den Code übersichtlich zu halten. Wobei die Datenmenge in der Datenbank auf das Minimum reduziert bleibt.

Ich hoffe du verstehst dass jetzt ein bisschen besser wo ich hin will.
LG Günni
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ein Form als Klasse in eine Collection 
Autor: Wobi
Datum: 06.04.20 02:27

Hallo Guenni
lass uns mal per PM darüber diskutieren, dann ist das einfacher auch mit Bildern.
Da die E-Mail Funktion hier im Forum leider nicht mehr funktioniert, schreibe mir wenn du magst an.
frank.mueller444(at)gmail.com

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ein Form als Klasse in eine Collection 
Autor: effeff
Datum: 07.04.20 10:56

Fällt Dir hier was auf?

Tabelle Datum:
ID, Datum

Tabelle Einsatz:
ID, IDDatum, EinsatzNr, Beginn, Ende

Tabelle Touren:
ID, IDDatum, TagestourNr, Leihwagenkennzeichen, Kundenkennzeichen, Fernverkehr, Nahverkehr, Tanken, Erstattung

a) Das Datum verwendest Du in beiden Tabellen, also kannst Du es auch in einer dritten halten und nur die IDs verwenden.
b) Eine Dauer braucht nicht eingetragen werden in eine Tabelle, da sich diese Daten aus Beginn und Ende errechnen lassen.
c) Du kannst die Touren und Erstattungen in einer Tabelle halten.
d) Eine Kalenderwoche brauchst Du nicht eintragen, da sich diese aus dem Datum ergibt.

Dazu brauchst Du genau eine Form. Der Rest sind entsprechende Abfragen.

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ein Form als Klasse in eine Collection 
Autor: guenni255
Datum: 08.04.20 09:08

Hallo effeff

Vielen Dank für deine Hinweise.

Ich weiß nicht ob ich dich richtig verstanden habe.
voraus schicken möchte ich das in den einzelnen Tabellen nicht die gleichen Anzahlen an Daten vorhanden sind.
Es gibt max 3 Einsätze pro Tag. max.10 Touren pro Tag. und nicht für jede Tour entstehen Auslagen.

zu a) Was soll ein Umweg über eine weitere Tabelle. Ich müsste erst die ID Zum Suchbegriff suchen und dann die ID in der Suchtabelle. Da kann ich auch den Suchbegriff direkt in der Suchtabelle suchen:

Zu b und d) Die Dauer bzw. KW wird auch errechnet. In der DB abgelegt nur, weil es für mich mehr Sinn macht bei der Monats- oder Jahresübersicht mit "SELECT sum(Stunden)...." oder der Suche nach einem KW Zeitraum (für den Auslagen erstattet werden) direkt auf die entsprechende Spalte zuzugreifen statt über die Berechnungsfunktionen jeden gelesen DS immer wieder berechnen zu lassen und Aufzusummieren.

zu c) Im Grunde gebe ich dir da Recht. das Datum ist in der Auslagen Tabelle aber als Bestandteil der Daten zur Ausgabe zu sehen. Schlüsselfeld ist die Tournummer. Da jetzt aber nicht zu jeder Tour Auslagen anfallen würde viel Leerraum in der Tabelle entstehen. das möchte ich eigentlich vermeiden.

Grundsätzlich hast du mit der Darstellung "über ein Form" recht. Aber das liegt etwas an meinem Programmier Stil.
Ich möchte gern schnell Ergebnisse auf dem Screen sehen. Und da ist eine Kleines Form Form zur Eingabe von 2...3 Daten, die in eine Tabelle gehören, schneller gemacht als ein Umfangreicheres bei dem dann Teile der Daten in verschiedenen Tabellen gespeichert werden müssen. Zudem sollen die Form´s auch optisch verändert werden. z.B für Neue Angaben, Ausgelesen Daten, oder erweiterte Daten (Nachträge zu vorhanden Datensätze).

Man könnte jetzt die Tabellen in der DB noch durch eine 1:1 Beziehung verknüpfen. Nur da weiß ich noch nicht wie ich dann in der SQL Abfrage an die Daten der verknüpften Tabelle komme.

Klingt vielleicht alles etwas wirr aber ich sehe es wie gesagt auch als Hobby an das immer ausbaufähig ist.

LG Günni

Beitrag wurde zuletzt am 08.04.20 um 09:19:38 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel