Files
2021-10-01 11:11:04 +02:00

340 lines
9.2 KiB
OpenEdge ABL

VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "CKunde"
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"
'==============================================================================
'
' File : Kunde.cls
' Date : 22.02.1999
' Version: 1.00
' Author : Andreas Schmidt, lindner&partner
'
'==============================================================================
'
' *shared*
'
' Kunde
'
'==============================================================================
'
' History:
'
' Date : 22.02.1999
' Version: 1.00
' Author : Andreas Schmidt, lindner&partner
'
' Erste dokumentierte Version.
'
'==============================================================================
Option Explicit
' Private Member
' --------------
Private m_lKundenNr As Long
Private m_sName As String
Private m_sOrt As String
Private m_sAnsprechpartner As String
Private m_sTelefon As String
Private m_nMitarbeiterNr As Integer
Private m_dAnlage As Date
Private m_nAnlageMitarbeiterNr As Integer
Private m_dAenderung As Date
Private m_nAenderungMitarbeiterNr As Integer
' Member neu initialisieren
'
Private Sub init()
m_lKundenNr = 0
m_sName = ""
m_sOrt = ""
m_sAnsprechpartner = ""
m_sTelefon = ""
m_nMitarbeiterNr = 0
m_dAnlage = Empty
m_nAnlageMitarbeiterNr = 0
m_dAenderung = Empty
m_nAenderungMitarbeiterNr = 0
End Sub
'------------------------------------------------------------------------------
' Öffentliche Funktionalität
'------------------------------------------------------------------------------
' @return Nr. des Kunden
'
Public Function getNr() As Long
getNr = m_lKundenNr
End Function
' @return Name des Kunden
'
Public Function getName() As String
getName = m_sName
End Function
' @return Ansprechpartner bei dem Kunden
'
Public Function getAnsprechpartner() As String
getAnsprechpartner = m_sAnsprechpartner
End Function
' @return Ort des Kunden
'
Public Function getOrt() As String
getOrt = m_sOrt
End Function
' @return Telefon des Kunden
'
Public Function getTelefon() As String
getTelefon = m_sTelefon
End Function
' @return Nr. des Mitarbeiters, der den Kunden primär betreut
'
Public Function getMitarbeiterNr() As Integer
getMitarbeiterNr = m_nMitarbeiterNr
End Function
' @param dAnlage Datum der Objekterzeugung
'
Private Sub setAnlageDatum(dAnlage As Date)
m_dAnlage = dAnlage
End Sub
' @return Datum der Objekterzeugung
'
Public Function getAnlageDatum() As Date
getAnlageDatum = m_dAnlage
End Function
' @param nMitarbeiterNr Nr. des Mitarbeiter, der das Objekt erzeugt hat
'
Private Sub setAnlageMitarbeiterNr(nMitarbeiterNr As Long)
m_nAnlageMitarbeiterNr = nMitarbeiterNr
End Sub
Public Function getAnlageMitarbeiterNr() As Integer
getAnlageMitarbeiterNr = m_nAnlageMitarbeiterNr
End Function
' @param dAenderung Datum der letzten Objektaenderung
'
Private Sub setAenderungDatum(dAenderung As Date)
m_dAenderung = dAenderung
End Sub
' @return Datum der letzten Objektänderung
'
Public Function getAenderungDatum() As Date
getAenderungDatum = m_dAenderung
End Function
' @param nMitarbeiterNr Nr. des Mitarbeiter, der das Objekt zuletzt geändert hat
'
Private Sub setAenderungMitarbeiterNr(nMitarbeiterNr As Long)
m_nAenderungMitarbeiterNr = nMitarbeiterNr
End Sub
' Attribute des Kundenobjekts setzen
'
' @param lKundenNr KundenNr
' @param sName Name
' @param sAnsprechpartner Ansprechpartner
' @param sOrt Ort
' @param sTelefon Telefon
' @param nMitarbeiterNr Nr. des Mitarbeiters, der den Kunden betreut
'
Public Function setKunde(lKundenNr As Long, sName As String, _
sAnsprechpartner As String, sOrt As String, _
sTelefon As String, nMitarbeiterNr As Integer _
)
Call init
m_lKundenNr = lKundenNr
m_sName = sName
m_sAnsprechpartner = sAnsprechpartner
m_sOrt = sOrt
m_sTelefon = sTelefon
m_nMitarbeiterNr = nMitarbeiterNr
End Function
' Kundensatz in Datenbank schreiben
'
' @param bAppend true = Speicherung als INSERT durchführen,
' false = Speicherung als UPDATE durchführen
'
' @return true = Datensatz wurde gespeichert,
' false = Fehler bei der Datenspeicherung
'
Public Function save(Optional bAppend As Boolean) As Boolean
On Error GoTo saveErr
If getNr() = 0 Then
Call showError("save", "Kunde hat keine Kunden-Nr.!")
Exit Function
End If
Dim sSQL As String
Dim SQL As New CSQL
If bAppend Then
sSQL = "INSERT INTO Kunde ("
sSQL = sSQL & "KundenNr, "
sSQL = sSQL & "Name, "
sSQL = sSQL & "Ort, "
sSQL = sSQL & "Ansprechpartner, "
sSQL = sSQL & "Telefon, "
sSQL = sSQL & "MitarbeiterNr, "
sSQL = sSQL & "AnlageDatum, "
sSQL = sSQL & "AnlageMitarbeiterNr "
sSQL = sSQL & ") VALUES ("
sSQL = sSQL & getNr() & ","
sSQL = sSQL & SQL.stringToSQLString(getName(), True) & ","
sSQL = sSQL & SQL.stringToSQLString(getOrt(), True) & ","
sSQL = sSQL & SQL.stringToSQLString(getAnsprechpartner(), True) & ","
sSQL = sSQL & SQL.stringToSQLString(getTelefon(), True) & ","
sSQL = sSQL & getMitarbeiterNr() & ","
sSQL = sSQL & SQL.dateToSQLString(Now) & ","
sSQL = sSQL & g_App.Mitarbeiter().getNr()
sSQL = sSQL & ");"
Else
sSQL = "Update Kunde SET "
sSQL = sSQL & "Name = " & SQL.stringToSQLString(getName()) & ","
sSQL = sSQL & "Ort = " & SQL.stringToSQLString(getOrt()) & ","
sSQL = sSQL & "Ansprechpartner = " & SQL.stringToSQLString(getAnsprechpartner()) & ","
sSQL = sSQL & "Telefon = " & SQL.stringToSQLString(getTelefon()) & ","
sSQL = sSQL & "MitarbeiterNr = " & getMitarbeiterNr() & ","
sSQL = sSQL & "AenderungDatum = " & SQL.dateToSQLString(Now) & ","
sSQL = sSQL & "AenderungMitarbeiterNr = " & g_App.Mitarbeiter.getNr() & ","
sSQL = sSQL & "WHERE"
sSQL = sSQL & "KundenNr = " & getNr() & ";"
End If
save = SQL.executeSQL(sSQL)
Exit Function
saveErr:
Call showError("save")
Exit Function
End Function
' Kunden mit dem angegebenen Namen aus der Datenbank laden
'
' @param sName Name des zu suchenden Kunden
'
Public Function loadForName(sName As String) As Boolean
Dim sSQL As String
Dim rs As New CRecordset
On Error GoTo loadForNameErr
sSQL = "SELECT "
sSQL = sSQL & "* "
sSQL = sSQL & "FROM "
sSQL = sSQL & "Kunde "
sSQL = sSQL & "WHERE "
sSQL = sSQL & "Kunde.Name = " + rs.stringToSQLString(sName, True)
sSQL = sSQL & ";"
If rs.openRS(sSQL, True) Then
If Not rs.EOF() Then If Not rs.EOF() Then loadForName = loadFromRecordset(rs)
End If
Exit Function
loadForNameErr:
Call showError("loadForName")
Exit Function
End Function
' Kunden mit dem angegebenen Nr. aus der Datenbank laden
'
' @param lKundenNr Nr. des Kunden
'
Public Function loadForNr(lKundenNr As Long) As Boolean
Dim sSQL As String
Dim rs As New CRecordset
On Error GoTo loadForNrErr
sSQL = "SELECT "
sSQL = sSQL & "* "
sSQL = sSQL & "FROM "
sSQL = sSQL & "Kunde "
sSQL = sSQL & "WHERE "
sSQL = sSQL & "Kunde.KundenNr = " & lKundenNr
sSQL = sSQL & ";"
If rs.openRS(sSQL, True) Then
If Not rs.EOF() Then loadForNr = loadFromRecordset(rs)
End If
Exit Function
loadForNrErr:
Call showError("loadForName")
Exit Function
End Function
' Kunden aus Datenbank laden
'
' @param rs Initialisiertes CRecordset-Objekt
'
Public Function loadFromRecordset(rs As CRecordset) As Boolean
On Error GoTo loadFromRecordsetErr
Call init
m_lKundenNr = rs.getLongValue("KundenNr")
m_sName = rs.getStringValue("Name")
m_sOrt = rs.getStringValue("Ort")
m_sAnsprechpartner = rs.getStringValue("Ansprechpartner")
m_sTelefon = rs.getStringValue("Telefon")
m_nMitarbeiterNr = rs.getIntValue("MitarbeiterNr")
Call setAnlageDatum(rs.getDateValue("AnlageDatum"))
Call setAnlageMitarbeiterNr(rs.getIntValue("AnlageMitarbeiterNr"))
Call setAenderungDatum(rs.getDateValue("AenderungDatum"))
Call setAenderungMitarbeiterNr(rs.getIntValue("AenderungMitarbeiterNr"))
loadFromRecordset = True
Exit Function
loadFromRecordsetErr:
Call showError("loadFromRecordset")
Exit Function
End Function
'------------------------------------------------------------------------------
' Private Funktionalität
'------------------------------------------------------------------------------
' Helper für Fehlerausgaben
'
' @param sMethod Name des Aufrufers
' @param sInfo optionaler Hinweistext
'
Private Sub showError(sMethod As String, Optional sInfo As String)
Call modError.showError("CKunde." + sMethod, sInfo)
End Sub