/********************************************************************/
/*         Datei / Version|.../fahrzeuge.cpp    / 1.0                    */
/*        Autor / Erstellt|Christian Hayer / 31.05.2003                */
/*                        |Markus Strobel                                */
/*         Autor / Update|                                            */
/*----------------------|-------------------------------------------*/
/*             Copyright|FHTE - IT2a (Gruppe: PetrolSoft)            */
/*                Internet|http://it.chayer.de/petrolsoft                */
/*                 Email|petrolsoft@it.chayer.de                    */
/*----------------------|-------------------------------------------*/
/*                 Aufgabe|Verwaltung der Fahrzeuge                    */
/*----------------------|-------------------------------------------*/
/*                 Eingang|Fahrzeugdaten                                */
/*----------------------|-------------------------------------------*/
/*                 Ausgang|Fahrzeugdaten                                */
/*----------------------|-------------------------------------------*/
/* Verwendete Funktionen|OnFahrzeugCreate(); OnFahrzeugDelete();    */
/*                        |OnFahrzeugEdit(); OnFahrzeugNext();        */
/*                        |OnFahrzeugPrev(); OnCreate();                */
/*                        |OnKillFocus(); OnPaint()                    */
/*----------------------|-------------------------------------------*/
/*     Globale Variablen|db1, frzset1, tdset1, frzanzahl            */
/*----------------------|-------------------------------------------*/
/*        Fehlerbehandlung|Abfangen von falschen Formateingaben        */
/********************************************************************/

/********************************************************************/
/*                                                                    */
/* This program is free software; you can redistribute it and/or    */
/* modify it under the terms of the GNU General Public License as */
/* published by the Free Software Foundation; either version 2    */
/* of the License, or (at your option) any later version.            */
/*                                                                    */
/********************************************************************/

/////////////////////////////////////////////////////////////////////////////
// Fahrzeuge.cpp : implementation file
//

#include "stdafx.h"
#include "Spritkostenverwaltung.h"
#include "SpritkostenverwaltungView.h"

#include "Fahrzeuge.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

    CDaoDatabase db1;    // Datenbank-Variable
    CDaoRecordset frzset1(&db1);    // RecordSet für Fahrzeuge zuweisen
    CDaoRecordset tdset1(&db1);        // RecordSet für Tankdaten zuweisen
    long frzanzahl;        // Variable für Anzahl der Fahrzeuge, die in der DB abgelegt sind

/////////////////////////////////////////////////////////////////////////////
// Fahrzeugverwaltung

IMPLEMENT_DYNCREATE(CFahrzeugeView, CDialog)

void CFahrzeugeView::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CFahrzeugeView)
    DDX_Control(pDX, IDC_FahrzeugDelete, m_FrzDelete);
    DDX_Control(pDX, IDC_FahrzeugEdit, m_FrzEdit);
    DDX_Control(pDX, IDC_FrzStand, m_FrzStandC);
    DDX_Control(pDX, IDC_FrzDaten, m_FrzDatenC);
    DDX_Control(pDX, IDC_FrzBezeichnung, m_FrzBezeichnungC);
    DDX_Control(pDX, IDC_FrzBesitzer, m_FrzBesitzerC);
    DDX_Control(pDX, IDC_FrzAnmerkung, m_FrzAnmerkungC);
    DDX_Control(pDX, IDC_FrzID, m_FrzIDC);
    DDX_Control(pDX, IDC_FahrzeugPrev, m_FrzPrev);
    DDX_Control(pDX, IDC_FahrzeugNext, m_FrzNext);
    DDX_Text(pDX, IDC_FrzBesitzer, m_FrzBesitzer);
    DDV_MaxChars(pDX, m_FrzBesitzer, 25);
    DDX_Text(pDX, IDC_FrzBezeichnung, m_FrzBezeichnung);
    DDV_MaxChars(pDX, m_FrzBezeichnung, 25);
    DDX_Text(pDX, IDC_FrzDaten, m_FrzDaten);
    DDV_MaxChars(pDX, m_FrzDaten, 25);
    DDX_Text(pDX, IDC_FrzID, m_FrzID);
    DDX_Text(pDX, IDC_FrzStand, m_FrzStand);
    DDV_MinMaxUInt(pDX, m_FrzStand, 0, 99999999);
    DDX_Text(pDX, IDC_FrzAnmerkung, m_FrzAnmerkung);
    DDV_MaxChars(pDX, m_FrzAnmerkung, 50);
    //}}AFX_DATA_MAP
}

/////////////////////////////////////////////////////////////////////////////
// CFahrzeugeView dialog


CFahrzeugeView::CFahrzeugeView(CWnd* pParent /*=NULL*/)
    : CDialog(CFahrzeugeView::IDD, pParent)
{
    //{{AFX_DATA_INIT(CFahrzeugeView)
    m_FrzBesitzer = _T("");
    m_FrzBezeichnung = _T("");
    m_FrzDaten = _T("");
    m_FrzID = 0;
    m_FrzStand = 0;
    m_FrzAnmerkung = _T("");
    //}}AFX_DATA_INIT
}

BEGIN_MESSAGE_MAP(CFahrzeugeView, CDialog)
    //{{AFX_MSG_MAP(CFahrzeugeView)
    ON_BN_CLICKED(IDC_FahrzeugCreate, OnFahrzeugCreate)
    ON_BN_CLICKED(IDC_FahrzeugDelete, OnFahrzeugDelete)
    ON_BN_CLICKED(IDC_FahrzeugEdit, OnFahrzeugEdit)
    ON_BN_CLICKED(IDC_FahrzeugNext, OnFahrzeugNext)
    ON_BN_CLICKED(IDC_FahrzeugPrev, OnFahrzeugPrev)
    ON_WM_CREATE()
    ON_WM_KILLFOCUS()
    ON_WM_PAINT()
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Wird beim Aufruf des Dialogs ausgeführt
int CFahrzeugeView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CDialog::OnCreate(lpCreateStruct) == -1)
        return -1;
    
    CString    sql;                    // Variable für SQL-String
    CString Fahrzeug,Fahrzeugdaten,Besitzer,Anmerkung;    // String-Variablen für Felder
    long FrzID, kmStand;            // Long-Variablen für Felder
    COleVariant var,i_var;            // Variablen für den Datenaustausch mit der DB
    var.ChangeType(VT_BSTR, NULL);    // Datentyp String
    i_var.ChangeType(VT_I4, NULL);    // Datentyp int-Werte

    db1.Open("PetrolSoft_DB.mdb");    // Datenbank öffnen
    sql.Format(_T("SELECT * FROM Fahrzeugdaten"));    // SQL-Befehl für Datenbankabfrage
    frzset1.Open(AFX_DAO_USE_DEFAULT_TYPE,sql,NULL);    // RecordSet öffnen
    
    if(!frzset1.IsEOF()) // Wenn Datensatze vorhanden
    {
        frzset1.MoveLast();    // gehe zum letzten Datensatz
        frzanzahl = frzset1.GetAbsolutePosition();    // bestimme die Anzahl der Datensätze
        sql.Format(_T("Fahrzeug_ID = %d"),searchID);    // Kommando für Datensatzsuche
        frzset1.FindFirst(sql);    // Finden des Datensatzes mit der entsprechenden Fahrzeug_ID

        // Auslesen der Fahrzeugdaten aus dem RecordSet
        frzset1.GetFieldValue("Fahrzeug_ID",i_var);
        FrzID = (long)i_var.lVal;
        frzset1.GetFieldValue("Fahrzeugbezeichnung",var);
        Fahrzeug = (LPCSTR)var.pbstrVal;
        frzset1.GetFieldValue("Fahrzeugdaten",var);
        Fahrzeugdaten = (LPCSTR)var.pbstrVal;
        frzset1.GetFieldValue("Besitzer",var);
        Besitzer = (LPCSTR)var.pbstrVal;
        frzset1.GetFieldValue("kmStand",i_var);
        kmStand = (long)i_var.lVal;
        frzset1.GetFieldValue("Anmerkung",var);
        if (var.vt != 1) Anmerkung = (LPCSTR)var.pbstrVal;
    }
        else    // wenn kein Datensatz vorhanden ist => Meldung ausgeben
    {
        AfxMessageBox(_T("Es sind keine Fahrzeugdaten verfügbar."));
        Fahrzeug = "";
        Besitzer = "";
        Fahrzeugdaten = "";
        Anmerkung = "keine Fahrzeugdaten verfügbar";
        kmStand = 0;
        FrzID = 0;
    }

    // Variablen den Feldern zuweisen
    m_FrzBezeichnung = Fahrzeug;
    m_FrzBesitzer = Besitzer;
    m_FrzDaten = Fahrzeugdaten;
    m_FrzAnmerkung = Anmerkung;
    m_FrzStand = kmStand;
    m_FrzID = FrzID;
    return 0;
}    // OnCreate()

/////////////////////////////////////////////////////////////////////////////
// Wird beim Zeichnen des Dialogs ausgeführt, hier werden die verschiedenen Buttons gesetzt
void CFahrzeugeView::OnPaint()
{
    CPaintDC dc(this); // device context for painting
    
    if (frzset1.GetAbsolutePosition() == -1)    // wenn kein Datensatz vorhanden
    {
        m_FrzNext.EnableWindow(FALSE);
        m_FrzPrev.EnableWindow(FALSE);
        m_FrzDelete.EnableWindow(FALSE);
        m_FrzEdit.EnableWindow(FALSE);
    }
    else    // wenn Datensatz vorhanden
    {
        m_FrzDelete.EnableWindow(TRUE);
        m_FrzEdit.EnableWindow(TRUE);
    }

    if (frzset1.GetAbsolutePosition() == 0)    // wenn beim 1. Datensatz
    {
        m_FrzPrev.EnableWindow(FALSE);
        if (frzanzahl > 1)         m_FrzNext.EnableWindow(TRUE);
    }
    
    if (frzset1.GetAbsolutePosition() == frzanzahl)    // wenn beim letzten Datensatz
    {
        m_FrzNext.EnableWindow(FALSE);
    }
}    // OnPaint()

/////////////////////////////////////////////////////////////////////////////
// Wird beim "Schließen" des Dialogs ausgeführt
void CFahrzeugeView::OnKillFocus(CWnd* pNewWnd)
{
    CDialog::OnKillFocus(pNewWnd);
    frzset1.Close();    // RecordSet schließen
    db1.Close();        // Datenbank schließen
}    // OnKillFocus()

/////////////////////////////////////////////////////////////////////////////
// Anlegen eines neuen Fahrzeuges
void CFahrzeugeView::OnFahrzeugCreate()
{
    CString status,msg;    // locale CString Variablen
    long FrzID;            // Fahrzeug ID
    BOOL fehler = 0;    // Variable für Fehlerauswertung
    COleVariant i_var;    // Variable für Austausch mit RecSet (DB)
    i_var.ChangeType(VT_I4, NULL);    // Typ auf int setzten

    GetDlgItemText(IDC_FahrzeugCreate,status);
    if (status=="Neu Anlegen")    // In Neu Anlgen Modus wechseln
    {
        if (UpdateData(TRUE) == 0) return;    // wenn UpdateData nicht erfolgreich Abbruch
        m_FrzBesitzer = _T("");
        m_FrzBezeichnung = _T("");
        m_FrzDaten = _T("");
        m_FrzID = 0;
        m_FrzStand = 0;
        m_FrzAnmerkung = _T("");
        m_FrzNext.EnableWindow(FALSE);
        m_FrzPrev.EnableWindow(FALSE);
        m_FrzBezeichnungC.SetReadOnly(FALSE);
        m_FrzBesitzerC.SetReadOnly(FALSE);
        m_FrzDatenC.SetReadOnly(FALSE);
        m_FrzStandC.SetReadOnly(FALSE);
        m_FrzAnmerkungC.SetReadOnly(FALSE);
        m_FrzEdit.EnableWindow(FALSE);
        m_FrzDelete.EnableWindow(FALSE);
        UpdateData(FALSE);

        SetDlgItemText(IDC_FahrzeugCreate,"Speichern");
    }
    else    // Speichern und in Anzeigemodus wechseln
    {
        if (UpdateData(TRUE) == 0) return;    // wenn UpdateData nicht erfolgreich Abbruch
        msg = "Es wurden nicht alle Felder ausgefüllt:\n";
        if ((CString)m_FrzBezeichnung == "")    // Fehler wenn keine Bezeichnung eingetragen wurde
        {
            msg += "- Fahrzeugbezeichnung\n";
            fehler = 1;
        }
        if ((CString)m_FrzDaten == "")    // Fehler wenn keine Fahrzeugdaten eingetragen wurden
        {
            msg += "- Fahrzeugdaten\n";
            fehler = 1;
        }
        if ((CString)m_FrzBesitzer == "")    // Fehler wenn kein Besitzer eingetragen wurde
        {
            msg += "- Fahrzeugbesitzer\n";
            fehler = 1;
        }
        if (fehler)    // Wenn Fehler, entsprechende Fehlermeldung ausgeben
        {
            AfxMessageBox(msg);    // Fehlermeldung ausgeben
            return;
        }
        frzset1.AddNew();    // Neuen Datensatz am Ende anfügen
        // Feldinhalte des Datensatzes beschreiben
        frzset1.SetFieldValue("Fahrzeugbezeichnung",(LPCSTR)m_FrzBezeichnung);
        frzset1.SetFieldValue("Besitzer",(LPCSTR)m_FrzBesitzer);
        frzset1.SetFieldValue("Fahrzeugdaten",(LPCSTR)m_FrzDaten);
        frzset1.SetFieldValue("kmStand",(long)m_FrzStand);
        if ((CString)m_FrzAnmerkung != "") frzset1.SetFieldValue("Anmerkung",(LPCSTR)m_FrzAnmerkung);
        UpdateData(FALSE);

        frzset1.Update();            // Datenbank mit RecordSet abgleichen
        frzanzahl = frzanzahl + 1;    // Anzahl der Datensätze um eins erhöhen
        frzset1.MoveLast();            // gehe zum Letzten Datensatz (Eingefügtem)
        AfxMessageBox(_T("Neues Fahrzeug wurde angelegt."));
        frzset1.GetFieldValue("Fahrzeug_ID",i_var);
        FrzID = i_var.lVal;
        m_FrzPrev.EnableWindow(TRUE);

        UpdateData(TRUE);
        m_FrzID = FrzID;
        // Felder auf nur lesbar schalten
        m_FrzBezeichnungC.SetReadOnly(TRUE);
        m_FrzBesitzerC.SetReadOnly(TRUE);
        m_FrzDatenC.SetReadOnly(TRUE);
        m_FrzStandC.SetReadOnly(TRUE);
        m_FrzAnmerkungC.SetReadOnly(TRUE);
        m_FrzEdit.EnableWindow(TRUE);
        m_FrzDelete.EnableWindow(TRUE);
        UpdateData(FALSE);

        SetDlgItemText(IDC_FahrzeugCreate,"Neu Anlegen");
        OnPaint();    // Button aktualisieren
    }
}    // OnFahrzeugCreate()

/////////////////////////////////////////////////////////////////////////////
// Ein vorhandenes Fahrzeug editieren
void CFahrzeugeView::OnFahrzeugEdit()
{
    CString status,msg;    // locale CString-Variablen
    BOOL fehler = 0;    // Variable für die locale Fehlerauswertung

    GetDlgItemText(IDC_FahrzeugEdit,status);
    if (status=="Ändern")    // In Editiermodus wechseln
    {
        // Felder auf editierbar stellen
        m_FrzBezeichnungC.SetReadOnly(FALSE);
        m_FrzBesitzerC.SetReadOnly(FALSE);
        m_FrzDatenC.SetReadOnly(FALSE);
        m_FrzStandC.SetReadOnly(FALSE);
        m_FrzAnmerkungC.SetReadOnly(FALSE);
        SetDlgItemText(IDC_FahrzeugEdit,"Speichern");
    }
    else    // Speichern und in Anzeigemodus wechseln
    {
        frzset1.Edit();    // RecordSet auf Edit-Status schalten

        if (UpdateData(TRUE) == 0) return;    // wenn UpdateData nicht erfolgreich Abbruch
        msg = "Es wurden nicht alle Felder ausgefüllt:\n";
        if ((CString)m_FrzBezeichnung == "")// Fehler wenn keine Bezeichnung eingegeben wurde
        {
            msg += "- Fahrzeugbezeichnung\n";
            fehler = 1;
        }
        if ((CString)m_FrzDaten == "")        // Fehler wenn keine Fahrzeugdaten eingetragen wurden
        {
            msg += "- Fahrzeugdaten\n";
            fehler = 1;
        }
        if ((CString)m_FrzBesitzer == "")    // Fehler wenn kein Besitzer eingegeben wurde
        {
            msg += "- Fahrzeugbesitzer\n";
            fehler = 1;
        }
        if (fehler)    // Wenn Fehler, entsprechende Fehlermeldung ausgeben
        {
            AfxMessageBox(msg);    // Fehlermeldung ausgeben
            return;
        }
        // RecordSet mit Felddaten abgleichen
        frzset1.SetFieldValue("Fahrzeugbezeichnung",(LPCSTR)m_FrzBezeichnung);
        frzset1.SetFieldValue("Besitzer",(LPCSTR)m_FrzBesitzer);
        frzset1.SetFieldValue("Fahrzeugdaten",(LPCSTR)m_FrzDaten);
        frzset1.SetFieldValue("kmStand",(long)m_FrzStand);
        if ((CString)m_FrzAnmerkung != "") frzset1.SetFieldValue("Anmerkung",(LPCSTR)m_FrzAnmerkung);
        else frzset1.SetFieldValueNull("Anmerkung");
        // Felder auf nur lesbar schalten
        m_FrzBezeichnungC.SetReadOnly(TRUE);
        m_FrzBesitzerC.SetReadOnly(TRUE);
        m_FrzDatenC.SetReadOnly(TRUE);
        m_FrzStandC.SetReadOnly(TRUE);
        m_FrzAnmerkungC.SetReadOnly(TRUE);
        UpdateData(FALSE);
        OnPaint();            // Button aktualisieren
        frzset1.Update();    // Datenbank mit RecordSet abgleichen
        AfxMessageBox(_T("Fahrzeugdaten wurde geändert."));
        SetDlgItemText(IDC_FahrzeugEdit,"Ändern");
    }
}    // OnFahrzeugEdit()

/////////////////////////////////////////////////////////////////////////////
// Im RecordSet ein Fahrzeug nach vorne gehen
void CFahrzeugeView::OnFahrzeugNext()
{
    CString    sql;                    // Variable für SQL-String
    CString Fahrzeug,Fahrzeugdaten,Besitzer,Anmerkung;    // String-Variablen für Felder
    long FrzID, kmStand;            // Long-Variablen für Felder
    COleVariant var,i_var;            // Variablen für den Datenaustausch mit der DB
    var.ChangeType(VT_BSTR, NULL);    // Datentyp String
    i_var.ChangeType(VT_I4, NULL);    // Datentyp int-Werte

    frzset1.MoveNext();    // zum nächsten Datensatz gehen

    // Wenn beim Letzten Datensatz, Button >> deaktivieren
    if (frzanzahl == frzset1.GetAbsolutePosition())
    {
        m_FrzNext.EnableWindow(FALSE);
    }

    // Werte aus der Datenbank lesen
    frzset1.GetFieldValue("Fahrzeug_ID",i_var);
    FrzID = (UINT)i_var.pbstrVal;
    frzset1.GetFieldValue("Fahrzeugbezeichnung",var);
    Fahrzeug = (LPCSTR)var.pbstrVal;
    frzset1.GetFieldValue("Fahrzeugdaten",var);
    Fahrzeugdaten = (LPCSTR)var.pbstrVal;
    frzset1.GetFieldValue("Besitzer",var);
    Besitzer = (LPCSTR)var.pbstrVal;
    frzset1.GetFieldValue("kmStand",i_var);
    kmStand = (long)i_var.lVal;
    frzset1.GetFieldValue("Anmerkung",var);
    if (var.vt != 1) Anmerkung = (LPCSTR)var.pbstrVal;

    // Felder und Buttons aktualisieren
    UpdateData(TRUE);
    m_FrzBezeichnung = Fahrzeug;
    m_FrzBesitzer = Besitzer;
    m_FrzDaten = Fahrzeugdaten;
    m_FrzAnmerkung = Anmerkung;
    m_FrzStand = kmStand;
    m_FrzID = FrzID;
    m_FrzPrev.EnableWindow(TRUE);
    UpdateData(FALSE);
}    // OnFahrzeugNext()

/////////////////////////////////////////////////////////////////////////////
// Im RecordSet ein Fahrzeug nach hinten gehen
void CFahrzeugeView::OnFahrzeugPrev()
{
    CString    sql;                    // Variable für SQL-String
    CString Fahrzeug,Fahrzeugdaten,Besitzer,Anmerkung;    // String-Variablen für Felder
    long FrzID, kmStand;            // Long-Variablen für Felder
    COleVariant var,i_var;            // Variablen für den Datenaustausch mit der DB
    var.ChangeType(VT_BSTR, NULL);    // Datentyp String
    i_var.ChangeType(VT_I4, NULL);    // Datentyp int-Werte
    
    frzset1.MovePrev();    // zum vorherigen Datensatz gehen

    // Wenn beim Ersten Datensatz, Button << deaktivieren
    if (frzset1.GetAbsolutePosition() == 0)
    {
        m_FrzPrev.EnableWindow(FALSE);
    }

    // Werte aus der Datenbank lesen
    frzset1.GetFieldValue("Fahrzeug_ID",i_var);
    FrzID = (UINT)i_var.pbstrVal;
    frzset1.GetFieldValue("Fahrzeugbezeichnung",var);
    Fahrzeug = (LPCSTR)var.pbstrVal;
    frzset1.GetFieldValue("Fahrzeugdaten",var);
    Fahrzeugdaten = (LPCSTR)var.pbstrVal;
    frzset1.GetFieldValue("Besitzer",var);
    Besitzer = (LPCSTR)var.pbstrVal;
    frzset1.GetFieldValue("kmStand",i_var);
    kmStand = (long)i_var.lVal;
    frzset1.GetFieldValue("Anmerkung",var);
    if (var.vt != 1) Anmerkung = (LPCSTR)var.pbstrVal;

    // Felder und Buttons aktualisieren
    UpdateData(TRUE);
    m_FrzBezeichnung = Fahrzeug;
    m_FrzBesitzer = Besitzer;
    m_FrzDaten = Fahrzeugdaten;
    m_FrzAnmerkung = Anmerkung;
    m_FrzStand = kmStand;
    m_FrzID = FrzID;
    m_FrzNext.EnableWindow(TRUE);
    UpdateData(FALSE);
}    // OnFahrzeugPrev()

/////////////////////////////////////////////////////////////////////////////
// Ein Fahrzeug aus der Datenbank löschen (Tankdaten werden auch gelöscht)
void CFahrzeugeView::OnFahrzeugDelete()
{
    CString    sql;                    // Variable für SQL-String
    int msg;                        // Variable für die Abfrage der Messagebox
    CString Fahrzeug,Fahrzeugdaten,Besitzer,Anmerkung;    // String-Variablen für Felder
    long FrzID, kmStand;            // Long-Variablen für Felder
    COleVariant var,i_var;            // Variablen für den Datenaustausch mit der DB
    var.ChangeType(VT_BSTR, NULL);    // Datentyp String
    i_var.ChangeType(VT_I4, NULL);    // Datentyp int-Werte

    GetDlgItemText(IDC_FrzBezeichnung,Fahrzeug);    // Fahrzeugbezeichnung aus Feld auslesen
    msg = AfxMessageBox(_T("Soll das Fahrzeug '" + Fahrzeug +"' wirklich gelöscht werden?\nEs werden auch die entsprechenden Tankdaten gelöscht."),MB_OKCANCEL);

    if (msg == 1)    // Wenn Meldung mit OK bestätigt wird der Datensatz gelöscht
    {
        frzset1.Delete();    // Fahrzeug-Datensatz löschen

        // Entsprechende Tankdaten des Fahrzeuges löschen
        FrzID = m_FrzID;
        sql.Format(_T("SELECT * FROM Tankdaten WHERE Fahrzeug_ID = %d"),FrzID);
        tdset1.Open(AFX_DAO_USE_DEFAULT_TYPE,sql,NULL);    // Tankdaten-RecordSet öffnen
        while(!tdset1.IsEOF()) // While not EOF
        {
            tdset1.Delete();    // Tankdaten-Datensatz löschen
            tdset1.MoveNext();    // gehe zum nächsten Datensatz
        }
        tdset1.Close();    // Tankdaten-RecordSet schließen

        frzanzahl = frzanzahl - 1 ;    // Anzahl der Datensätze um eins vermindern
        
        if (frzanzahl > 0)    // Wenn Datensatz vorhanden, gehe zum letzten Datensatz
        {
            frzset1.MoveLast();        // gehe zum letzten Datensatz
            // Werte aus der Datenbank lesen
            frzset1.GetFieldValue("Fahrzeug_ID",i_var);
            FrzID = i_var.lVal;
            frzset1.GetFieldValue("Fahrzeugbezeichnung",var);
            Fahrzeug = (LPCSTR)var.pbstrVal;
            frzset1.GetFieldValue("Fahrzeugdaten",var);
            Fahrzeugdaten = (LPCSTR)var.pbstrVal;
            frzset1.GetFieldValue("Besitzer",var);
            Besitzer = (LPCSTR)var.pbstrVal;
            frzset1.GetFieldValue("kmStand",i_var);
            kmStand = (long)i_var.lVal;
            frzset1.GetFieldValue("Anmerkung",var);
            if (var.vt != 1) Anmerkung = (LPCSTR)var.pbstrVal;
        }
        else    // Wenn kein Datensatz vorhanden, entsprechende Ausgabe der Felder
        {
            Fahrzeug = "";
            Besitzer = "";
            FrzID = 0;
            kmStand = 0;
            Anmerkung = "keine Fahrzeuge vorhanden !";
        }

        OnPaint();    // Button aktualisieren

        // Felder und Buttons aktualisieren
        UpdateData(TRUE);
        m_FrzBezeichnung = Fahrzeug;
        m_FrzBesitzer = Besitzer;
        m_FrzDaten = Fahrzeugdaten;
        m_FrzAnmerkung = Anmerkung;
        m_FrzStand = kmStand;
        m_FrzID = FrzID;
        m_FrzBezeichnungC.SetReadOnly(TRUE);
        m_FrzBesitzerC.SetReadOnly(TRUE);
        m_FrzDatenC.SetReadOnly(TRUE);
        m_FrzStandC.SetReadOnly(TRUE);
        m_FrzAnmerkungC.SetReadOnly(TRUE);
        UpdateData(FALSE);
    }
}    // OnFahrzeugDelete()