Imports System.Reflection Public Class frmGesSichMenu ' Public Zollsatz As Integer = 0 ' Public ZollsatzMulti As Double = 0 ' Public Referenzwert As Integer = 0 ' Public UstEnabled As Boolean = False 'Public Ust As Integer ' Public Saldo As Integer = 0 Public SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim GesSichRef As New cGesamtSicherheitsReferenz 'Public ATR As Boolean = False Public Property Standort As String = "" Private Sub frmGesamtsicherheiten_Menu_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Text = "Gesamtsicherheiten " & Standort frmHauptfenster.EnableDoubleBuffered(dgvListe) GesSichRef.LoadStandort(Standort) lblSaldo.Text = "Saldo: €" & Decimal.Parse(GesSichRef.CalcSaldo()).ToString("N") txtVon._ShortDateOnly = True txtbis._ShortDateOnly = True txtVon.Text = Date.Today.AddDays(-30).ToString("dd.MM.yyyy") txtbis.Text = Date.Today.ToString("dd.MM.yyyy") ShowStandort() LoadDGV() End Sub Public Function LoadDGV() Dim sqladdon As String = "" If chkOffen.Checked Then sqladdon &= " AND Sicherheitssaldo != '0,00 €'" ' Dim sqlstring As String = "select * from (Select GesamtsichNr, MIN(Standort) as Standort, MIN(FilialNummer) as FilialNummer, min(Abfertigungsnummer) as Abfertigungsnummer, 'max(LKWID) as LKWID, min (MakeDate) as Datum, FORMAT(SUM( 'Case ' when Art = 'Open' then (Sicherheitsbetrag * -1) ' when Art = 'Close' then Sicherheitsbetrag 'End) , 'C', 'de-DE') As SicherheitsSaldo 'From [tblGesamtsicherheit] 'Group by GesamtsichNr) as Temp ' Where Standort = '" & Standort & "' '" & sqladdon & " 'order by GesamtsichNr" Dim sqlstring As String = " select * from (Select gesamtsichnr, MIN(Standort) as Standort, MIN(FilialNummer) as FilialNummer, min(Abfertigungsnummer) as Abfertigungsnummer, max(LKWID) as LKWID, min (MakeDate) as Datum, FORMAT(SUM( Case when Art = 'Open' then (Sicherheitsbetrag * -1) when Art = 'Close' then Sicherheitsbetrag End) , 'C', 'de-DE')As SicherheitsSaldo From (select * from (select GesamtsichNr as ding from [tblGesamtsicherheit] where Freitext like '%" & txtSuchbegriff.Text & "%' OR Abfertigungsnummer like '%" & txtSuchbegriff.Text & "%' OR Kennnummer like '%" & txtSuchbegriff.Text & "%' OR LKWID like '%" & txtSuchbegriff.Text & "%' )as tb1 left join [tblGesamtsicherheit] as tb2 on tb1.ding = tb2.GesamtsichNr) as meh group by GesamtsichNr) as meh2 Where Standort = '" & Standort & "' " & sqladdon & " AND Datum > '" & Date.Parse(txtVon.Text) & "' AND Datum < '" & Date.Parse(txtbis.Text).AddDays(1).AddSeconds(-1) & "'" dgvListe.SET_SQL(sqlstring, "AVISO") dgvListe.LOAD() With dgvListe .SelectionMode = DataGridViewSelectionMode.FullRowSelect .RowHeadersWidth = 6 .Columns("Standort").Visible = False .Columns("GesamtsichNr").HeaderText = "#" .Columns("GesamtsichNr").Width = 36 .Columns("Filialnummer").HeaderText = "Filiale" .Columns("Filialnummer").Width = 43 .Columns("Abfertigungsnummer").HeaderText = "Abfert.Nr." .Columns("Abfertigungsnummer").Width = 107 .Columns("Datum").Width = 112 .Columns("SicherheitsSaldo").Width = 96 End With For Each row As DataGridViewRow In dgvListe.Rows If row.Cells("SicherheitsSaldo").Value <> 0 Then row.DefaultCellStyle.BackColor = Color.Red Else row.DefaultCellStyle.BackColor = Color.Green End If Next End Function Public Sub ShowStandort() lblReferenzwert.Text = "Referenzwert: €" & GesSichRef.Referenzwert.ToString("N") lblZollsatz.Text = "Zollsatz: " & GesSichRef.Zollsatz & "%" lblSaldo.Text = "Saldo: €" & Decimal.Parse(GesSichRef.CalcSaldo()).ToString("N") End Sub Private Sub OpenFRM(sender As Object, e As DataGridViewCellEventArgs) Handles dgvListe.CellDoubleClick Dim frm As New frmGesSich With frm .GesSichRef = GesSichRef .GesamtsichNr = dgvListe.CurrentRow.Cells("GesamtsichNr").Value .Standort = Me.Standort .MakeDate = dgvListe.CurrentRow.Cells("Datum").Value .LKWID = dgvListe.CurrentRow.Cells("LKWID").Value .FilialNummer = dgvListe.CurrentRow.Cells("FilialNummer").Value .Abfertigungsnummer = dgvListe.CurrentRow.Cells("Abfertigungsnummer").Value End With AddHandler frm.FormClosing, Function() GesSichRef.CalcSaldo() ShowStandort() LoadDGV() Me.BringToFront() End Function frm.Show() End Sub Private Sub btnNeu_Click(sender As Object, e As EventArgs) Handles btnNeu.Click Dim frm As New frmGesSich With frm .GesSichRef = GesSichRef .Standort = Me.Standort .MakeDate = Date.Now '.ATR = GesSichRef.ATR '.Ust = GesSichRef.Ust '.UstEnabled = GesSichRef.UstEnabled .Neu = True End With AddHandler frm.FormClosing, Function() GesSichRef.CalcSaldo() ShowStandort() LoadDGV() Me.BringToFront() End Function frm.Show() End Sub Private Sub lblSaldo_Click(sender As Object, e As EventArgs) Handles lblSaldo.Click lblSaldo.Text = "Saldo: €" & Decimal.Parse(GesSichRef.CalcSaldo()).ToString("N") LoadDGV() End Sub Private Sub chkOffen_CheckedChanged(sender As Object, e As EventArgs) Handles chkOffen.CheckedChanged, txtSuchbegriff.TextChanged If Me.Visible Then LoadDGV() End Sub Private Sub Keypresses(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtSuchbegriff.KeyPress Select Case Asc(e.KeyChar) Case 48 To 57, 8, 46, 58, 32, 44, 65 To 90, 97 To 122 ' Zahlen, Backspace, . und : zulassen Case Else ' alle anderen Eingaben unterdrücken e.Handled = True End Select End Sub Private Sub FlatButton1_Click(sender As Object, e As EventArgs) Handles FlatButton1.Click txtSuchbegriff.Text = "" : chkOffen.Checked = True txtVon.Text = Date.Today.AddDays(-30).ToString("dd.MM.yyyy") txtbis.Text = Date.Today.ToString("dd.MM.yyyy") End Sub Private Sub MyTextBox1_TextChanged(sender As Object, e As EventArgs) End Sub Private Sub btnSucheStarten_Click(sender As Object, e As EventArgs) Handles btnSucheStarten.Click Try Date.Parse(txtVon.Text) Date.Parse(txtbis.Text) If Me.Visible Then LoadDGV() Catch ex As Exception MsgBox("Datum VON und/oder BIS konnte nicht konvertiert werden.") End Try End Sub Private Sub FlatButton2_Click(sender As Object, e As EventArgs) Handles FlatButton2.Click txtVon.Text = Date.Parse("01.01.1970") txtbis.Text = Date.Today.ToString("dd.MM.yyyy") End Sub Private Sub ExportCSVToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExportCSVToolStripMenuItem.Click csvexport(dgvListe) End Sub Public Shared Function csvexport(quelldgv As DataGridView) Dim savefiledialog As New SaveFileDialog Dim firstin As String Dim out As String Dim in2 As String Dim header As String savefiledialog.Filter = "CSV files (*.csv)|*.CSV" savefiledialog.InitialDirectory = "C:\Verag" savefiledialog.ShowDialog() Try For r As Integer = 0 To quelldgv.Rows.Count - 1 For c As Integer = 0 To quelldgv.Columns.Count 'test &= r & c & vbCrLf Try 'test &= Replace(quelldgv.Rows(r).Cells(c).Value.ToString, vbCrLf, "vbCrlLf") firstin = quelldgv.Rows(r).Cells(c).Value.ToString 'in2 = """" & firstin & """" & ";" in2 = firstin & ";" out &= Replace(in2, vbCrLf, "##vbCrLf##") Catch ex As Exception out &= "" End Try Next out &= "nZ" Next For c As Integer = 0 To quelldgv.Columns.Count - 1 header &= quelldgv.Columns(c).Name & ";" Next out = Replace(out, "nZ", vbCrLf) 'MsgBox(out) Using sw As New IO.StreamWriter(savefiledialog.FileName) sw.WriteLine(header) sw.WriteLine(out) End Using Catch ex As Exception MsgBox(ex.Message) End Try End Function End Class Public Class cGesamtSicherheitsReferenz Public SQL As New VERAG_PROG_ALLGEMEIN.SQL Property Zollsatz As Integer = 0 Property ZollsatzMulti As Double = 0 Property Referenzwert As Double = 0 Property UstEnabled As Boolean = False Property Ust As Integer Property Saldo As Double = 0 Property ATR As Boolean = False Property Standort As String = "" Public Sub LoadStandort(_Standort As String) Dim StandortSqlString As String = "select * from [tblGesamtsicherheitReferenz] where Standort = " & "'" & _Standort & "'" Dim dt As New DataTable dt = SQL.loadDgvBySql(StandortSqlString, "AVISO", 100, True) Zollsatz = dt.Rows(0).Item("Zollsatz") Referenzwert = dt.Rows(0).Item("Referenzwert") UstEnabled = dt.Rows(0).Item("UstEnabled") Ust = dt.Rows(0).Item("Ust") ATR = dt.Rows(0).Item("ATR") ZollsatzMulti = Zollsatz / 100 Saldo = dt.Rows(0).Item("aktSaldo") Standort = _Standort End Sub Public Function CalcSaldo() As String Dim SaldoString As String = "select SUM( case when Art = 'Open' then (Sicherheitsbetrag * -1) when Art = 'Close' then Sicherheitsbetrag end) as SicherheitsSaldo from [tblGesamtsicherheit] Where Standort = '" & Standort & "'" Dim dt As New DataTable Dim mrn As Double = 0 dt = SQL.loadDgvBySql(SaldoString, "AVISO", 100, True) If dt.Rows(0).Item(0).ToString.Length > 0 Then mrn = dt.Rows(0).Item(0) End If Saldo = Referenzwert + mrn UpdateSaldo() Return Saldo End Function Public Function UpdateSaldo() SQL.doSQL("Update [tblGesamtsicherheitReferenz] Set aktSaldo = '" & Saldo & "' WHERE Standort = '" & Standort & "'", "AVISO") End Function End Class