VERSION 1.0 CLASS BEGIN MultiUse = -1 'True Persistable = 0 'NotPersistable DataBindingBehavior = 0 'vbNone DataSourceBehavior = 0 'vbNone MTSTransactionMode = 0 'NotAnMTSObject END Attribute VB_Name = "CPruefgang" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes" Attribute VB_Ext_KEY = "Top_Level" ,"Yes" Option Explicit '============================================================================== ' ' File : CPruefgang ' Author : Reinhard Henning ' Date : 04.02.1999 ' Version: 0.01 ' '============================================================================== ' ' History: ' ' '============================================================================== ' ' 'lokale Variable(n) zum Zuweisen der Eigenschaft(en) Private mvarPruefgangNr As Long 'lokale Kopie Private mvarPruefstationNr As Integer 'lokale Kopie Private mvarPrueferNr As Integer 'lokale Kopie Private mvarPruefzeit As Long 'lokale Kopie Private mvarAnzahl As Integer 'lokale Kopie Private mvarDatum As Date 'lokale Kopie Private mvarTyp As String 'lokale Kopie ' neu RH 2016-11-17 Private mstrTypzusatz As String 'lokale Kopie Public mstrSerienNrListe As String Private mvarNennweite As Integer 'lokale Kopie Private mvarNenntemperatur As Byte 'lokale Kopie Private mvarLufttemperatur As Single 'lokale Kopie Private mvarRelativeFeuchte As Single 'lokale Kopie Private mvarLuftDruck As Single 'lokale Kopie Private mvarVorlauftemperatur As Single 'lokale Kopie Private mvarStartzeit As Double 'lokale Kopie Private mvarPruefgangLang As Boolean 'lokale Kopie Private mvarBemerkung As String 'lokale Kopie Private mvarKalibrierID As Integer ' Prüfpunktspezifische Daten im Array Private mvarPP_Zeit(10) As Single 'lokale Kopie Private mvarPP_Soll(10) As Single 'lokale Kopie Private mvarPP_Ist(10) As Single 'lokale Kopie Private mvarPP_RefZSerienNr(10) As Long 'lokale Kopie Private mvarPP_Ist_V(10) As Double 'lokale Kopie Private mvarPP_T_Start(10) As Double Private mvarPP_T_Ende(10) As Double ' Waage/Behälter Nr Private mvarPP_Waage(10) As Byte 'lokale Kopie Private mvarPP_Info(10) As Byte 'lokale Kopie für Bit 0 = true: LWL, Bit 0 = false: Opto Public Enum KALIBRIERUNG KALIBRIER_ID_Waage = 2 KALIBRIER_ID_Referenzzaehler = 1 KALIBRIER_ID_Behaelter = 3 End Enum Public Enum PP_INFO_BIT PP_INFO_LWL = 0 End Enum Public Property Let PP_Info(PPNr As Integer, BitNo As Byte, blnBit As Boolean) ' Bit 0: LWL If blnBit = True Then mvarPP_Info(PPNr) = mvarPP_Info(PPNr) Or (2 ^ BitNo) Else mvarPP_Info(PPNr) = mvarPP_Info(PPNr) And Not (2 ^ BitNo) End If End Property Public Property Let PruefgangLang(ByVal vData As Boolean) 'wird beim Zuweisen eines Werts zu der Eigenschaft auf der linken Seite einer Zuweisung verwendet. 'Syntax: X.PruefgangLang = 5 mvarPruefgangLang = vData End Property Public Property Get PruefgangLang() As Boolean 'wird beim Ermitteln eines Eigenschaftswertes auf der rechten Seite einer Zuweisung verwendet. 'Syntax: Debug.Print X.PruefgangLang PruefgangLang = mvarPruefgangLang End Property Public Property Let Bemerkung(vData As String) mvarBemerkung = vData End Property Public Property Get Bemerkung() As String Bemerkung = mvarBemerkung End Property Public Property Let PP_RefZSerienNr(Index As Integer, ByVal vData As Long) mvarPP_RefZSerienNr(Index) = vData End Property Public Property Get PP_RefZSerienNr(Index As Integer) As Long PP_RefZSerienNr = mvarPP_RefZSerienNr(Index) End Property Public Property Let PP_T_Start(Index As Integer, ByVal vData As Double) mvarPP_T_Start(Index) = vData End Property Public Property Let PP_T_Ende(Index As Integer, ByVal vData As Double) mvarPP_T_Ende(Index) = vData End Property Public Property Let PP_Ist_V(Index As Integer, ByVal vData As Double) mvarPP_Ist_V(Index) = vData End Property Public Property Get PP_Ist_V(Index As Integer) As Double PP_Ist_V = mvarPP_Ist_V(Index) End Property Public Property Let PP_Waage(Index As Integer, ByVal vData As Single) mvarPP_Waage(Index) = vData End Property Public Property Get PP_Waage(Index As Integer) As Single PP_Waage = mvarPP_Waage(Index) End Property Public Property Let PP_Ist(Index As Integer, ByVal vData As Single) mvarPP_Ist(Index) = vData End Property Public Property Get PP_Ist(Index As Integer) As Single PP_Ist = mvarPP_Ist(Index) End Property Public Property Let PP_Soll(Index As Integer, ByVal vData As Single) mvarPP_Soll(Index) = vData End Property Public Property Get PP_Soll(Index As Integer) As Single PP_Soll = mvarPP_Soll(Index) End Property Public Property Let PP_Zeit(Index As Integer, ByVal vData As Single) mvarPP_Zeit(Index) = vData End Property Public Property Get PP_Zeit(Index As Integer) As Single PP_Zeit = mvarPP_Zeit(Index) End Property Public Property Let Vorlauftemperatur(ByVal vData As Single) mvarVorlauftemperatur = vData End Property Public Property Get Vorlauftemperatur() As Single Vorlauftemperatur = mvarVorlauftemperatur End Property Public Property Let Lufttemperatur(ByVal vData As Single) mvarLufttemperatur = vData End Property Public Property Get Lufttemperatur() As Single Lufttemperatur = mvarLufttemperatur End Property Public Property Let RelativeFeuchte(ByVal vData As Single) mvarRelativeFeuchte = vData End Property Public Property Get RelativeFeuchte() As Single RelativeFeuchte = mvarRelativeFeuchte End Property Public Property Let LuftDruck(ByVal vData As Single) mvarLuftDruck = vData End Property Public Property Get LuftDruck() As Single LuftDruck = mvarLuftDruck End Property Public Property Let Nenntemperatur(ByVal vData As Byte) mvarNenntemperatur = vData End Property Public Property Get Nenntemperatur() As Byte 'wird beim Ermitteln eines Eigenschaftswertes auf der rechten Seite einer Zuweisung verwendet. 'Syntax: Debug.Print X.Nenntemperatur Nenntemperatur = mvarNenntemperatur End Property Public Property Let Nennweite(ByVal vData As Integer) 'wird beim Zuweisen eines Werts zu der Eigenschaft auf der linken Seite einer Zuweisung verwendet. 'Syntax: X.Nennweite = 5 mvarNennweite = vData End Property Public Property Get Nennweite() As Integer 'wird beim Ermitteln eines Eigenschaftswertes auf der rechten Seite einer Zuweisung verwendet. 'Syntax: Debug.Print X.Nennweite Nennweite = mvarNennweite End Property Public Property Let Typ(ByVal vData As String) 'wird beim Zuweisen eines Werts zu der Eigenschaft auf der linken Seite einer Zuweisung verwendet. 'Syntax: X.Typ = 5 mvarTyp = vData End Property Public Property Get Typ() As String 'wird beim Ermitteln eines Eigenschaftswertes auf der rechten Seite einer Zuweisung verwendet. 'Syntax: Debug.Print X.Typ Typ = mvarTyp End Property Public Property Let Datum(ByVal vData As Date) 'wird beim Zuweisen eines Werts zu der Eigenschaft auf der linken Seite einer Zuweisung verwendet. 'Syntax: X.Datum = 5 mvarDatum = vData End Property Public Property Let Typzusatz(ByVal strData As String) mstrTypzusatz = strData End Property Public Property Get Datum() As Date 'wird beim Ermitteln eines Eigenschaftswertes auf der rechten Seite einer Zuweisung verwendet. 'Syntax: Debug.Print X.Datum Datum = mvarDatum End Property Public Property Let Anzahl(ByVal vData As Integer) 'wird beim Zuweisen eines Werts zu der Eigenschaft auf der linken Seite einer Zuweisung verwendet. 'Syntax: X.Anzahl = 5 mvarAnzahl = vData End Property Public Property Get Anzahl() As Integer 'wird beim Ermitteln eines Eigenschaftswertes auf der rechten Seite einer Zuweisung verwendet. 'Syntax: Debug.Print X.Anzahl Anzahl = mvarAnzahl End Property Public Property Let Pruefzeit(ByVal vData As Integer) 'wird beim Zuweisen eines Werts zu der Eigenschaft auf der linken Seite einer Zuweisung verwendet. 'Syntax: X.Pruefzeit = 5 mvarPruefzeit = vData End Property Public Property Get Pruefzeit() As Integer 'wird beim Ermitteln eines Eigenschaftswertes auf der rechten Seite einer Zuweisung verwendet. 'Syntax: Debug.Print X.Pruefzeit Pruefzeit = mvarPruefzeit End Property Public Property Let PrueferNr(ByVal vData As Integer) 'wird beim Zuweisen eines Werts zu der Eigenschaft auf der linken Seite einer Zuweisung verwendet. 'Syntax: X.PrueferNr = 5 mvarPrueferNr = vData End Property Public Property Get PrueferNr() As Integer 'wird beim Ermitteln eines Eigenschaftswertes auf der rechten Seite einer Zuweisung verwendet. 'Syntax: Debug.Print X.PrueferNr PrueferNr = mvarPrueferNr End Property Public Property Let PruefstationNr(ByVal vData As Integer) 'wird beim Zuweisen eines Werts zu der Eigenschaft auf der linken Seite einer Zuweisung verwendet. 'Syntax: X.PruefstationNr = 5 mvarPruefstationNr = vData End Property Public Property Get PruefstationNr() As Integer 'wird beim Ermitteln eines Eigenschaftswertes auf der rechten Seite einer Zuweisung verwendet. 'Syntax: Debug.Print X.PruefstationNr PruefstationNr = mvarPruefstationNr End Property Public Property Let KalibrierID(ByVal vData As Integer) 'wird beim Zuweisen eines Werts zu der Eigenschaft auf der linken Seite einer Zuweisung verwendet. 'Syntax: X.KalibrierId = ... mvarKalibrierID = vData End Property Public Property Get KalibrierID() As Integer 'wird beim Ermitteln eines Eigenschaftswertes auf der rechten Seite einer Zuweisung verwendet. 'Syntax: Debug.Print X.KalibrierId KalibrierID = mvarKalibrierID End Property Public Property Let PruefgangNr(ByVal vData As Long) 'wird beim Zuweisen eines Werts zu der Eigenschaft auf der linken Seite einer Zuweisung verwendet. 'Syntax: X.PruefgangNr = 5 mvarPruefgangNr = vData End Property Public Property Get PruefgangNr() As Long 'wird beim Ermitteln eines Eigenschaftswertes auf der rechten Seite einer Zuweisung verwendet. 'Syntax: Debug.Print X.PruefgangNr PruefgangNr = mvarPruefgangNr End Property Public Function load(lngPruefgangNr As Long) As Boolean Dim rs As CRecordset Dim sSQL As String Dim i As Integer On Error GoTo Errorhandler sSQL = "SELECT * FROM Pruefgang WHERE PruefgangNr = " & lngPruefgangNr Set rs = New CRecordset rs.openRS sSQL, True If Not rs.EOF Then 'DBFelder: 'PruefgangNr PruefstationNr PrueferNr Pruefzeit PruefgangLang Datum Typ ' Nennweite Nenntemperatur Lufttemperatur Vorlauftemperatur Anzahl 'Bemerkung DBasePruefgangNr mvarPruefstationNr = rs.getLongValue("PruefstationNr") mvarPruefgangNr = rs.getLongValue("PruefgangNr") mvarPruefgangNr = rs.getLongValue("PruefgangNr") mvarPruefstationNr = rs.getIntValue("PruefstationNr") mvarPrueferNr = rs.getIntValue("PrueferNr") mvarPruefzeit = rs.getLongValue("Pruefzeit") mvarDatum = rs.getDateValue("Datum") mvarTyp = rs.getStringValue("Typ") mvarNennweite = rs.getIntValue("Nennweite") mvarNenntemperatur = rs.getSingleValue("Nenntemperatur") mvarLufttemperatur = rs.getSingleValue("Lufttemperatur") mvarRelativeFeuchte = rs.getSingleValue("RelativeFeuchte") mvarLuftDruck = rs.getSingleValue("LuftDruck") mvarVorlauftemperatur = rs.getSingleValue("Vorlauftemperatur") mvarPruefgangLang = rs.getBooleanValue("PruefgangLang") mvarBemerkung = rs.getStringValue("Bemerkung") mvarAnzahl = rs.getIntValue("Anzahl") mvarKalibrierID = rs.getIntValue("KalibrierId") For i = 1 To 10 If rs.isFieldNull("PP" & i & "_Soll") Then Exit For mvarPP_Zeit(i) = rs.getSingleValue("PP" & i & "_Zeit") mvarPP_Soll(i) = rs.getSingleValue("PP" & i & "_Soll") mvarPP_Ist(i) = rs.getSingleValue("PP" & i & "_Ist") mvarPP_RefZSerienNr(i) = rs.getLongValue("PP" & i & "_RefZSerienNr") mvarPP_Ist_V(i) = rs.getDoubleValue("PP" & i & "_Ist_V") PP_Waage(i) = rs.getByteValue("PP" & i & "_Waage") mvarPP_Info(i) = rs.getByteValue("PP" & i & "_Info") Next load = True End If Set rs = Nothing Exit Function Errorhandler: ErrorMsg "Pruefgang " & lngPruefgangNr & " Daten konnten nicht geladen werden! Fehler " & Err.Description & ": " & Err.Description End Function Public Sub delete() Dim sSQL As String Dim rs As CRecordset Dim lngRecordsaffected As Long On Error GoTo Errorhandler Dim lngTimeout As Long Dim lngTime As Long lngTime = GetTickCount() If mvarPruefgangNr > 0 Then Screen.MousePointer = vbHourglass lngTimeout = g_App.getDB.getConnection.CommandTimeout g_App.getDB.getConnection.CommandTimeout = 120 sSQL = "DELETE from Prueffehler where PruefgangNr=" & mvarPruefgangNr g_App.getDB.getConnection.Execute sSQL, lngRecordsaffected Debug.Print sSQL & "; " & lngRecordsaffected & " gelöschte Datensätze aus Prueffehler " sSQL = "DELETE from AuftragPositionSerienNr where PruefgangNr=" & mvarPruefgangNr g_App.getDB.getConnection.Execute sSQL, lngRecordsaffected Debug.Print sSQL & "; " & lngRecordsaffected & " gelöschte Datensätze aus AuftragPositionSerienNr " sSQL = "DELETE from KontPrueffehler where PruefgangNr=" & mvarPruefgangNr g_App.getDB.getConnection.Execute sSQL, lngRecordsaffected Debug.Print sSQL & "; " & lngRecordsaffected & " gelöschte Datensätze aus KontPrueffehler " sSQL = "DELETE from Pruefgang where PruefgangNr=" & mvarPruefgangNr g_App.getDB.getConnection.Execute sSQL, lngRecordsaffected Debug.Print sSQL & "; " & lngRecordsaffected&; " gelöschte Datensätze aus Pruefgang " Screen.MousePointer = vbNormal g_App.getDB.getConnection.CommandTimeout = lngTimeout If GetTickCount - lngTime > 60000 Then LogIntoDB "Ausführungszeit für pruefgang.delete: " & GetTickCount - lngTime & " ms", "pruefgang.delete" End If End If Exit Sub Errorhandler: Call showError("Pruefgang delete") End Sub Public Function save() As Boolean On Error GoTo saveErr Dim Index As Integer Dim rs As CRecordset Dim sSQL As String wdh: ' Pruefzeit setzen: Zeit vom initialiseren der Klasse bis zum letzten speichern mvarPruefzeit = Int((Now * 1 - mvarStartzeit * 1) * 60 * 60 * 24) Set rs = New CRecordset If mvarPruefgangNr = 0 Then ' Prüfgang-Objekt wurde nicht aus der DB geladen, also Neuanlage '--------------------------------- ' Bestimmung der neuen PruefgangNr: ' jeweils einen höher als die höchste PruefgangNr des Prüfgangs mit der ' zugehörigen PruefstationNr ' Wenn keine Datensätze zur PruefstationNr vorhanden sind, ' nehme PruefstationNr * 1000000 als PruegangNr 'sSQL = "SELECT max(PruefgangNr)+1 as NewPruefgangNr from Pruefgang where PruefstationNr=" & g_App.PruefstationNr sSQL = "SELECT max(PruefgangNr)+1 as NewPruefgangNr from Pruefgang where PruefgangNr < " & (g_App.PruefstationNr + 1) * 1000000 & " And PruefgangNr >= " & g_App.PruefstationNr * 1000000 rs.openRS (sSQL) If Not rs.EOF And Not rs.BOF Then mvarPruefgangNr = rs.getLongValue("NewPruefgangNr") If mvarPruefgangNr = 0 Then mvarPruefgangNr = g_App.PruefstationNr * 1000000 End If Else mvarPruefgangNr = g_App.PruefstationNr * 1000000 End If If mvarPruefgangNr >= (g_App.PruefstationNr + 1) * 1000000 - 1 Then ErrorMsg "Das Nummernband für die Prüfgang-Nummern ist ausgeschöpft (" & mvarPruefgangNr & ")." & vbCrLf & "Bitte benachrichtigen Sie den Programmierer!" & vbCrLf & "Das Programm wird nun beendet!" End End If Set rs = Nothing '--------------------------------- Set rs = New CRecordset sSQL = "Select * from Pruefgang where 1=0" rs.openRS (sSQL) rs.addNew Call rs.setValue("PruefgangNr", mvarPruefgangNr) Else sSQL = "SELECT * from Pruefgang where PruefgangNr=" & mvarPruefgangNr & ";" rs.openRS (sSQL) If rs.EOF Then MsgBox ("konnte Pruefgang mit Nr=" & mvarPruefgangNr & " nicht finden") Exit Function End If End If Call rs.setValue("PruefstationNr", mvarPruefstationNr) Call rs.setValue("PrueferNr", mvarPrueferNr) Call rs.setValue("Datum", mvarDatum) Call rs.setValue("Pruefzeit", mvarPruefzeit) ' RH 7.11.2006 Call rs.setValue("Typ", Left(mvarTyp, 20)) ' RH 17.11.2016 Call rs.setValue("Typzusatz", Left(mstrTypzusatz, 20)) Call rs.setValue("Nennweite", mvarNennweite) Call rs.setValue("Nenntemperatur", mvarNenntemperatur) If mvarLufttemperatur > 0 Then Call rs.setValue("Lufttemperatur", Round(mvarLufttemperatur, 1)) End If If mvarRelativeFeuchte > 0 Then Call rs.setValue("RelativeFeuchte", Round(mvarRelativeFeuchte, 1)) End If If mvarLuftDruck > 0 Then Call rs.setValue("LuftDruck", Round(mvarLuftDruck, 1)) End If Call rs.setValue("Vorlauftemperatur", mvarVorlauftemperatur) Call rs.setValue("PruefgangLang", mvarPruefgangLang) Call rs.setValue("Bemerkung", mvarBemerkung) Call rs.setValue("KalibrierID", mvarKalibrierID) Call rs.setValue("Anzahl", mvarAnzahl) ' Prüfpunktspezifische Daten im Array For Index = 1 To 10 If PP_Soll(Index) = 0 Then ' Abbruch der Schleife wenn Durchfluß = 0 Exit For End If Call rs.setValue("PP" & CStr(Index) & "_Zeit", PP_Zeit(Index)) Call rs.setValue("PP" & CStr(Index) & "_Soll", PP_Soll(Index)) Call rs.setValue("PP" & CStr(Index) & "_Ist", PP_Ist(Index)) Call rs.setValue("PP" & CStr(Index) & "_RefZSerienNr", PP_RefZSerienNr(Index)) Call rs.setValue("PP" & CStr(Index) & "_Waage", PP_Waage(Index)) Call rs.setValue("PP" & CStr(Index) & "_Ist_V", PP_Ist_V(Index)) Call rs.setValue("PP" & CStr(Index) & "_Info", mvarPP_Info(Index)) ' PP1_T_Start - PP10_T_Start If mvarPP_T_Start(Index) > 0 Then Call rs.setValue("PP" & CStr(Index) & "_T_Start", mvarPP_T_Start(Index)) End If ' PP1_T_Ende - PP10_T_Ende If mvarPP_T_Ende(Index) > 0 Then Call rs.setValue("PP" & CStr(Index) & "_T_Ende", mvarPP_T_Ende(Index)) End If Next If rs.update = False Then ' fehler If MsgBox("Möchten Sie die Datenbank-Operation wiederholen?", vbYesNo Or vbDefaultButton1) = vbYes Then GoTo wdh End If Else save = True End If Exit Function saveErr: Call showError("save") Exit Function End Function Private Sub Class_Initialize() mvarPruefstationNr = g_App.PruefstationNr mvarPrueferNr = g_App.Mitarbeiter.getNr mvarDatum = Now mvarTyp = Empty mvarStartzeit = Now 'Double mvarBemerkung = "" End Sub Public Function saveAbgebrochenen() As Boolean On Error GoTo saveErr Dim Index As Integer Dim rs As CRecordset Dim sSQL As String ' Pruefzeit setzen: Zeit vom initialiseren der Klasse bis zum letzten speichern mvarPruefzeit = Int((Now * 1 - mvarStartzeit * 1) * 60 * 60 * 24) Set rs = New CRecordset rs.openRS ("SELECT * FROM PruefgangAbgebrochen where PruefgangNr = 0") rs.addNew Call rs.setValue("PruefgangNr", mvarPruefgangNr) Call rs.setValue("PruefstationNr", mvarPruefstationNr) Call rs.setValue("PrueferNr", mvarPrueferNr) Call rs.setValue("Datum", mvarDatum) Call rs.setValue("Pruefzeit", mvarPruefzeit) Call rs.setValue("Typ", mvarTyp) ' RH 17.11.2016 Call rs.setValue("Typzusatz", Left(mstrTypzusatz, 20)) ' RH 21.11.2016 Call rs.setValue("Seriennummern", mstrSerienNrListe) Call rs.setValue("Nennweite", mvarNennweite) Call rs.setValue("Nenntemperatur", mvarNenntemperatur) Call rs.setValue("Lufttemperatur", mvarLufttemperatur) Call rs.setValue("RelativeFeuchte", mvarRelativeFeuchte) Call rs.setValue("Vorlauftemperatur", mvarVorlauftemperatur) Call rs.setValue("PruefgangLang", mvarPruefgangLang) Call rs.setValue("Bemerkung", mvarBemerkung) Call rs.setValue("KalibrierID", mvarKalibrierID) Call rs.setValue("Anzahl", mvarAnzahl) ' Prüfpunktspezifische Daten im Array For Index = 1 To 10 If PP_Soll(Index) = 0 Then ' Abbruch der Schleife wenn Durchfluß = 0 Exit For End If Call rs.setValue("PP" & CStr(Index) & "_Zeit", PP_Zeit(Index)) Call rs.setValue("PP" & CStr(Index) & "_Soll", PP_Soll(Index)) Call rs.setValue("PP" & CStr(Index) & "_Ist", PP_Ist(Index)) Call rs.setValue("PP" & CStr(Index) & "_RefZSerienNr", PP_RefZSerienNr(Index)) Call rs.setValue("PP" & CStr(Index) & "_Waage", PP_Waage(Index)) Call rs.setValue("PP" & CStr(Index) & "_Ist_V", PP_Ist_V(Index)) Call rs.setValue("PP" & CStr(Index) & "_Info", mvarPP_Info(Index)) Next rs.update saveAbgebrochenen = True Exit Function saveErr: ErrorMsg "Fehler " & Err.Number & " beim Speichern eines abgebrochenen Prüfganges in Funktion 'CPruefgang.saveAbgebrochenen()':" & vbCrLf & Err.Description, False Exit Function End Function