|
Registriert seit: 28. Mai 2008 9 Beiträge |
#13
Im hauptfenster werden Daten in Edit Felder eingegeben und dann eingetragen
Hoffe das hilft dir weiter :
Delphi-Quellcode:
procedure TfrmMain.KundeanlegenClick(Sender: TObject);
begin // Verbindung prüfen if FMySQL.Connected = false then begin LogHinzufuegen('Kunde anlegen: Keine SQL-Verbindung'); messagedlg(strMySqlKeineVerbindung,mterror,[mbok],0 ); end; frmKundeAnlegen.strKundennummer := ''; frmKundeAnlegen.Tag := 0; frmKundeAnlegen.ShowModal; if frmKundeAnlegen.Tag = 1 then BescheideAendernClick(Sender); end;
Delphi-Quellcode:
procedure TfrmMain.BescheideAendernClick(Sender: TObject);
var strKundennummer:string; begin // Verbindung prüfen if FMySQL.Connected = false then begin LogHinzufuegen('btnBescheideAendernClick: Keine SQL-Verbindung'); messagedlg(strMySqlKeineVerbindung,mterror,[mbok],0 ); end; strKundennummer := FeldAusGridLesen(frmmain.grdKunden, 'Kd.-Nr.'); if strKundennummer <> '' then begin frmBescheide.strKundennummer := strKundennummer; frmBescheidEinf.strKundennummer := strKundennummer; frmBescheide.ShowModal; frmmain.Refresh; frmmain.grdKundenClick(frmMain); // Aktualisieren end; end;
Delphi-Quellcode:
procedure TfrmMain.grdKundenClick(Sender: TObject); var intZaehler,intZaehlerZwei,intAnzahlGueltig, intAnzahlHauptkundeE,intAnzahlHauptkundeK,intAnzahlE,intAnzahlK,intAnzahlHauptkundeUngueltig,intAnzahlUngueltig:integer; strSpalte,strInhalt,strKundennummer,strAbfrage,strGueltigAb,strGueltigBis,strBescheidArt:string; objFeldDefinitionen:TMysql_FieldDef; ex:boolean; datDatum:TDateTime; fltUmsatz,fltZahlung,fltKundenSaldo:real; begin // Verbindung prüfen if FMySQL.Connected = false then begin LogHinzufuegen('grdKundenClick: Keine SQL-Verbindung'); messagedlg(strMySqlKeineVerbindung,mterror,[mbok],0 ); end; // Fenster rücksetzen FelderLeeren(); // Kundennummer im Grid suchen strKundennummer := FeldAusGridLesen(frmmain.grdKunden, 'Kd.-Nr.'); if strKundennummer = '' then begin LogHinzufuegen('grdKundenClick: Kundennummer konnte nicht aus Grid gelesen werden'); // messagedlg('Ein interner Fehler ist beim Abrufen der Kundendaten aufgetreten.' + #10#13 + 'Prüfen Sie die Datenbankverbindung und versuchen Sie es erneut.',mterror,[mbok],0 ); Exit; end; // Fortschritt zeigen frmmain.lblKunden.Caption := 'Lese Kundendaten...'; frmmain.lblKunden.Refresh; // Felder rücksetzen intAnzahlE := 0; intAnzahlK := 0; intAnzahlUngueltig := 0; intAnzahlHauptkundeE := 0; intAnzahlHauptkundeK := 0; // Kundenstammdaten lesen fltKundenSaldo := 0; strAbfrage := 'select Kundennummer,Nachname,Vorname,Strasse as Straße,Hausnummer,Postleitzahl,Ort as Wohnort,Geburtsdatum,Kunde_seit as "Kunde seit",Bezeichnung as Verteilstelle,Bemerkungen,Fruehere_Kundennummer as "Orts Kundennumer",Kundenkonto_Saldo from ' + strEinstellungenSQLTabellenKundenstamm + ' INNER JOIN ' + strEinstellungenSQLTabellenPLZ + ' ON ('+ strEinstellungenSQLTabellenKundenstamm +'.Postleitzahl_id = '+ strEinstellungenSQLTabellenPLZ +'.Postleitzahl_id) INNER JOIN ' + strEinstellungenSQLTabellenVerteilstellen +' ON (' + strEinstellungenSQLTabellenKundenstamm + '.Verteilstellen_Nr =' + strEinstellungenSQLTabellenVerteilstellen + '.Verteilstellen_Nr) where ('; strAbfrage := strAbfrage + 'Kundennummer="' + strKundennummer + '")'; LogHinzufuegen('grdKundenClick: SQL-Abfrage: ' + strabfrage); FResult := fmysql.query(strabfrage, True, ex); if (ex = True) and (fresult.rowscount > 0) then begin LogHinzufuegen('grdKundenClick: Resultat: OK, Kunden ' + inttostr(FResult.RowsCount) + ' Mal gefunden'); for intZaehler := 0 to fresult.FieldsCount - 1 do begin objFeldDefinitionen := fresult.FieldDef(intZaehler)^; strspalte := objFeldDefinitionen.name; strInhalt := fresult.FieldValue(intzaehler); loghinzufuegen('grdKundenClick: Verarbeite Kunden-Stammdaten ' + strspalte + ' / ' + strinhalt); try if strspalte = 'Vorname' then edtVorname.text := strinhalt; if strspalte = 'Nachname' then edtName.text := strinhalt; if strspalte = 'Postleitzahl' then edtPLZ.text := strinhalt; if strspalte = 'Wohnort' then edtWohnort.text := strinhalt; if strspalte = 'Straße' then edtStrasse.text := strinhalt; if strspalte = 'Hausnummer' then edtHausnr.text := strinhalt; if strspalte = 'Geburtsdatum' then begin edtGeburtsdatum.text := Transformdate(strinhalt,MysqlDateToDate); try strInhalt := Transformdate(strinhalt,MysqlDateToDate); // ############### DEBUG #################### // Datum vor 18 Jahren errechnen if FormatDateTime('dd.mm.', frmMain.dteDatum.date) = '29.02.' then begin // Schaltjahr datDatum := strtodate('28.02.' + inttostr(strtoint(FormatDateTime('yyyy', frmMain.dteDatum.date)) - 18)); end else begin datDatum := strtodate(FormatDateTime('dd.mm.yyyy', strtodate(FormatDateTime('dd.mm.', frmMain.dteDatum.date) + inttostr(strtoint(FormatDateTime('yyyy', frmMain.dteDatum.date)) - 18)))); end; // Datum vergleichen if isDatePlus(strInhalt) = True then begin // Datum prüfen if strtodate(strInhalt) > datDatum then begin // Kind/Jugendlicher unter 18 intAnzahlHauptkundeK := intAnzahlHauptkundeK + 1; LogHinzufuegen('grdKundenClick: Hauptkunde Kind/Jugendlicher'); end else begin // Erwachsener intAnzahlHauptkundeE := intAnzahlHauptkundeE + 1; LogHinzufuegen('grdKundenClick: Hauptkunde Erwachsener'); end; end else begin LogHinzufuegen('grdKundenClick: Hauptkunde - Datum ungültig'); intAnzahlHauptkundeUngueltig := intAnzahlHauptkundeUngueltig + 1; end; except LogHinzufuegen('grdKundenClick: Fehler beim Verarbeiten von Kunden-Daten'); end; end; if strspalte = 'Kundennummer' then edtKdnNr.text := strinhalt; if strspalte = 'Kunde seit' then edtKundeSeit.text := Transformdate(strinhalt,MysqlDateToDate); if strspalte = 'Verteilstelle' then edtVerteilstelle.text := strinhalt; if strspalte = 'Orts Kundennumer' then edtOertlKdnr.text := strinhalt; if strspalte = 'Bemerkungen' then begin mmoBemerkung.Lines.Clear; mmoBemerkung.Lines.text := BermerkungenDeKodieren(strInhalt); end; if strSpalte = 'Kundenkonto_Saldo' then fltKundenSaldo := StrToFloat(StringReplace(strinhalt, '.', ',', [])); except LogHinzufuegen('grdKundenClick: Fehler beim Verarbeiten von Kunden-Stammdaten'); end; end; end else begin LogHinzufuegen('grdKundenClick: Resultat: Fehler oder 0 Resultate - ' + fmysql.LastError); messagedlg('Ein Fehler ist beim Abrufen der Kundendaten aufgetreten.' + #10#13 + 'Prüfen Sie die Datenbankverbindung und versuchen Sie es erneut.',mterror,[mbok],0 ); end; mmoBemerkung.Perform(EM_LineScroll, 0 , 0); // Scrollbar nach oben rollen // Bescheid-Daten lesen frmmain.mmoBescheid.Clear; strAbfrage := 'select Bescheid_Art, Gueltig_Ab, Gueltig_Bis from ' + strEinstellungenSQLTabellenBescheide + ' where ('; strAbfrage := strAbfrage + 'Kundennummer="' + strKundennummer + '")'; LogHinzufuegen('grdKundenClick: SQL-Abfrage: ' + strabfrage); FResult := fmysql.query(strabfrage, True, ex); if (ex = True) and (fresult.rowscount > 0) then begin LogHinzufuegen('grdKundenClick: Resultat: OK, ' + inttostr(FResult.RowsCount) + ' Bescheide gefunden'); intAnzahlGueltig := 0; for intZaehler := 0 to fresult.RowsCount - 1 do begin fresult.RecNo := intZaehler; strGueltigAb := ''; strGueltigBis := ''; strBescheidArt := ''; for intZaehlerZwei := 0 to fresult.FieldsCount -1 do begin objFeldDefinitionen := fresult.FieldDef(intZaehlerZwei)^; strSpalte := objFeldDefinitionen.name; strInhalt := fresult.FieldValue(intZaehlerZwei); LogHinzufuegen('grdKundenClick: Verarbeiten Daten für Bescheid ' + IntToStr(intZaehler) + ' ' + strspalte + ' / ' + strinhalt); try if strspalte = 'Gueltig_Ab' then begin strInhalt := Transformdate(strinhalt,MysqlDateToDate); if isDatePlus(strInhalt) = true then begin strGueltigAb := strInhalt; end else begin LogHinzufuegen('grdKundenClick: Datum ungültig'); strGueltigAb := ''; end; end; if strspalte = 'Gueltig_Bis' then begin strInhalt := Transformdate(strinhalt,MysqlDateToDate); if isDatePlus(strInhalt) = true then begin strGueltigBis := strInhalt; end else begin LogHinzufuegen('grdKundenClick: Datum ungültig'); strGueltigBis := ''; end; end; if strspalte = 'Bescheid_Art' then strBescheidArt := strinhalt; except LogHinzufuegen('grdKundenClick: Fehler beim Verarbeiten von Bescheid-Daten'); end; end; strInhalt := inttostr(intZaehler + 1) + ': ' + strBescheidArt; if (isDatePlus(strGueltigAb) = True) then begin if strGueltigBis = '' then strGueltigBis := DateToStr(frmMain.dteDatum.date); if (StrToDate(strGueltigAb) <= frmMain.dteDatum.date) and (StrToDate(strGueltigBis) >= StrToDate(DateToStr(frmMain.dteDatum.date)) {frmMain.dteDatum.date}) then begin strInhalt := strInhalt + ' (gültig)'; intAnzahlGueltig := intAnzahlGueltig + 1; end else if (StrToDate(strGueltigAb) >= frmMain.dteDatum.date) and ((StrToDate(strGueltigBis) >= StrToDate(strGueltigAb)) or (StrToDate(strGueltigBis) = StrToDate(DateToStr(frmMain.dteDatum.date)))) then begin strInhalt := strInhalt + ' (noch nicht gültig)'; end else begin strInhalt := strInhalt + ' (abgelaufen)'; end; end else begin strInhalt := strInhalt + ' (Daten ungültig)'; LogHinzufuegen('grdKundenClick: Bescheid-Daten ungültig'); end; frmmain.mmoBescheid.Lines.Add(strInhalt); end; if intAnzahlGueltig = 0 then frmmain.mmoBescheid.Lines.Add('Fazit: Keine gültigen Bescheide gefunden.') else if intAnzahlGueltig = 1 then frmmain.mmoBescheid.Lines.Add('Fazit: ' + inttostr(intAnzahlGueltig) + ' gültiger Bescheid') else if intAnzahlGueltig > 1 then frmmain.mmoBescheid.Lines.Add('Fazit: ' + inttostr(intAnzahlGueltig) + ' gültige Bescheid'); end else begin LogHinzufuegen('grdKundenClick: Resultat: Fehler oder 0 Resultate - ' + fmysql.LastError); frmmain.mmoBescheid.Lines.Add('(keine Bescheide erfasst)'); // messagedlg('Ein Fehler ist beim Abrufen der Bescheide aufgetreten.' + #10#13 + 'Prüfen Sie die Datenbankverbindung und versuchen Sie es erneut.',mterror,[mbok],0 ); end; mmoBescheid.Perform(EM_LineScroll, 0 , mmoBescheid.Lines.Count-1); // Scrollbar nach oben rollen // Weitere-Personen-Daten lesen frmmain.edtAnzErw.text := '0'; frmmain.edtAnzKinder.text := '0'; strAbfrage := 'select Geburtsdatum from ' + strEinstellungenSQLTabellenFamilienmitglieder + ' where ('; strAbfrage := strAbfrage + 'Kundennummer="' + strKundennummer + '")'; LogHinzufuegen('grdKundenClick: SQL-Abfrage: ' + strabfrage); FResult := fmysql.query(strabfrage, True, ex); if (ex = True) and (fresult.rowscount > 0) then begin LogHinzufuegen('grdKundenClick: Resultat: OK, ' + inttostr(FResult.RowsCount) + ' weitere Personen gefunden'); for intZaehler := 0 to fresult.RowsCount - 1 do begin fresult.RecNo := intZaehler; for intZaehlerZwei := 0 to fresult.FieldsCount -1 do begin objFeldDefinitionen := fresult.FieldDef(intZaehlerZwei)^; strSpalte := objFeldDefinitionen.name; strInhalt := fresult.FieldValue(intZaehlerZwei); LogHinzufuegen('grdKundenClick: Verarbeite Daten für weitere Person ' + IntToStr(intZaehler) + ' ' + strspalte + ' / ' + strinhalt); if strspalte = 'Geburtsdatum' then begin try strInhalt := Transformdate(strinhalt,MysqlDateToDate); // Datum vor 18 Jahren errechnen if FormatDateTime('dd.mm.', frmMain.dteDatum.date) = '29.02.' then begin // Schaltjahr datDatum := strtodate('28.02.' + inttostr(strtoint(FormatDateTime('yyyy', frmMain.dteDatum.date)) - 18)); end else begin datDatum := strtodate(FormatDateTime('dd.mm.yyyy', strtodate(FormatDateTime('dd.mm.', frmMain.dteDatum.date) + inttostr(strtoint(FormatDateTime('yyyy', frmMain.dteDatum.date)) - 18)))); end; // Datum vergleichen if isDatePlus(strInhalt) = True then begin // Datum prüfen if strtodate(strInhalt) > datDatum then begin // Kind/Jugendlicher unter 18 intAnzahlK := intAnzahlK + 1; LogHinzufuegen('grdKundenClick: Kind/Jugendlicher'); end else begin // Erwachsener intAnzahlE := intAnzahlE + 1; LogHinzufuegen('grdKundenClick: Erwachsener'); end; end else begin LogHinzufuegen('grdKundenClick: Datum ungültig'); intAnzahlUngueltig := intAnzahlUngueltig + 1; end; except LogHinzufuegen('grdKundenClick: Fehler beim Verarbeiten von Weitere-Kunden-Daten'); end; end; end; end; end else begin LogHinzufuegen('grdKundenClick: Resultat: Fehler oder 0 Resultate - ' + fmysql.LastError); // messagedlg('Ein Fehler ist beim Abrufen der weiteren Personen aufgetreten.' + #10#13 + 'Prüfen Sie die Datenbankverbindung und versuchen Sie es erneut.',mterror,[mbok],0 ); end; // Personen-Daten eintragen (inkl. ungültigen Hauptkunden- und Nebenkunden-Geburtstage) frmmain.edtAnzErw.text := inttostr(intAnzahlE + intAnzahlHauptkundeE); if (intAnzahlUngueltig > 0) or (intAnzahlHauptkundeUngueltig > 0) then frmmain.edtAnzErw.text := frmmain.edtAnzErw.text + ' (+' + inttostr(intAnzahlUngueltig + intAnzahlHauptkundeUngueltig) + '?)'; frmmain.edtAnzKinder.text := inttostr(intAnzahlK + intAnzahlHauptkundeK); // Umsatz-Daten eintragen frmmain.edtZuZahlen.text := Format('%f',[reaEinstellungenGebuehrErwachsener * (intAnzahlE + intAnzahlHauptkundeE + intAnzahlUngueltig + intAnzahlHauptkundeUngueltig) + reaEinstellungenGebuehrKind * (intAnzahlK + intAnzahlHauptkundeK)]); frmmain.edtHeuteKassiert.text := frmmain.edtZuZahlen.text; frmmain.edtNochOffen.text := Format('%f',[fltKundenSaldo]); // Fortschritt zeigen frmmain.lblKunden.Caption := 'Gefundene Kunden: ' + IntToStr(frmmain.grdKunden.RowCount - 1); // Fokus auf das Umsatz-Feld setzen try frmmain.edtHeuteKassiert.SetFocus; except end; end; |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |