Imports System.Data.SqlClient Imports System.Drawing Imports System.IO Imports System.Windows.Forms Public Class frmFirmenuebersicht Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim dt As DataTable Private Sub frminterneEmailBenachrichtigungen_Load(sender As Object, e As EventArgs) Handles Me.Load VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False loadDGVMailbenachrichtigungen() End Sub Sub loadDGVMailbenachrichtigungen() Try Me.Cursor = Cursors.WaitCursor Dim sqlstr As String = "" sqlstr &= " Select [Firma_ID] ,[Firma_Bez],[Firma_Straße],[Firma_PLZ],[Firma_Ort],[Firma_LandKz] as Land,replace([Firma_Telefon],'Tel. ','') as Firma_Telefon ,replace([Firma_Telefax],'Fax ','') as Firma_Telefax ,Replace([Firma_UID],'UID: ', '') as Firma_UID ,Replace([Firma_EORI],'EORI: ', '') as Firma_EORI, [Firma_Bankverbindung1],Replace([Firma_IBAN1],'IBAN: ', '') as Firma_IBAN1, Replace([Firma_BIC1],'BIC: ', '') as Firma_BIC1,[Firma_Bankverbindung2],[Firma_IBAN2],[Firma_BIC2],[Firma_E-Mail], [Firma_Webadresse],[Firmengruppe],[Firma_Warenort],[Firma_E_Mail_Mahnungen],[Firma_E_Mail_Fakturierung],[Firma_Steuernummer] ,Replace([Firma_Firmenbuch],'Firmenbuch: ', '') as Firma_Firmenbuch,[Firma_Logo],[Firma_Logo_Erweitert] from tblFirma " Dim sqlstr_Mailsettings As String = " select mail_username as 'user',mail_password as PW, mail_host as Host, mail_port as Port,mail_kindOfMail, mail_firmaID from tblMailSettings" dt = SQL.loadDgvBySql(sqlstr_Mailsettings, "ADMIN") With dgvFirmen .SET_SQL(sqlstr, "FMZOLL") .LOAD() showDGVPruefungsobjekte(dt) End With Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, "") End Try Me.Cursor = Cursors.Default End Sub Sub showDGVPruefungsobjekte(dt As DataTable) With dgvFirmen If .ColumnCount = 0 Then Me.Cursor = Cursors.Default : Exit Sub .RowHeadersVisible = False .ReadOnly = True .SelectionMode = DataGridViewSelectionMode.FullRowSelect .MultiSelect = False .Columns("Firma_Logo").Visible = False .Columns("Firma_Logo_Erweitert").Visible = False .Columns("Firma_Bankverbindung1").Visible = False .Columns("Firma_IBAN1").Visible = False .Columns("Firma_BIC1").Visible = False .Columns("Firma_Bankverbindung2").Visible = False .Columns("Firma_BIC2").Visible = False .Columns("Firma_IBAN2").Visible = False '.Columns("Firma_E-Mail").Visible = False .Columns("Firma_E_Mail_Mahnungen").Visible = False .Columns("Firma_E_Mail_Fakturierung").Visible = False .Columns("Firma_ID").Width = 30 .Columns("Firma_Warenort").Width = 60 .Columns("Firma_PLZ").Width = 60 .Columns("Land").Width = 40 .Columns("Firma_Bez").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill If Not dgvFirmen.Columns.Contains("EmailEinstellungen") Then Dim col As New DataGridViewCheckBoxColumn() col.Name = "EmailEinstellungen" col.HeaderText = "E-Mail-Settings" col.ReadOnly = True dgvFirmen.Columns.Add(col) End If For Each col As DataGridViewColumn In dgvFirmen.Columns col.HeaderText = col.HeaderText.Replace("Firma_", "") Next Dim mailFirmaIds As New HashSet(Of Integer) For Each row As DataRow In dt.Rows If Not IsDBNull(row("mail_firmaId")) Then mailFirmaIds.Add(CInt(row("mail_firmaId"))) End If Next For Each r As DataGridViewRow In dgvFirmen.Rows If r.IsNewRow Then Continue For If r.Cells("Firma_ID").Value Is Nothing OrElse IsDBNull(r.Cells("Firma_ID").Value) Then Continue For Dim firmaId As Integer = CInt(r.Cells("Firma_ID").Value) r.Cells("EmailEinstellungen").Value = mailFirmaIds.Contains(firmaId) Next End With End Sub Private Sub dgvFirmen_SelectionChanged(sender As Object, e As EventArgs) Handles dgvFirmen.SelectionChanged If dgvFirmen.SelectedRows.Count = 1 Then pbLogo.SizeMode = PictureBoxSizeMode.Zoom pbLogoMail.SizeMode = PictureBoxSizeMode.Zoom pbLogo.Image = BytesToImage(dgvFirmen.SelectedRows(0).Cells("Firma_Logo").Value) pbLogoMail.Image = BytesToImage(dgvFirmen.SelectedRows(0).Cells("Firma_Logo_Erweitert").Value) lblFirma.Text = dgvFirmen.SelectedRows(0).Cells("Firma_Bez").Value lblBank1.Text = If(IsDBNull(dgvFirmen.SelectedRows(0).Cells("Firma_Bankverbindung1").Value) OrElse dgvFirmen.SelectedRows(0).Cells("Firma_Bankverbindung1").Value Is Nothing, "", dgvFirmen.SelectedRows(0).Cells("Firma_Bankverbindung1").Value.ToString()) lblIban1.Text = If(IsDBNull(dgvFirmen.SelectedRows(0).Cells("Firma_IBAN1").Value) OrElse dgvFirmen.SelectedRows(0).Cells("Firma_IBAN1").Value Is Nothing, "", dgvFirmen.SelectedRows(0).Cells("Firma_IBAN1").Value.ToString()) lblBic1.Text = If(IsDBNull(dgvFirmen.SelectedRows(0).Cells("Firma_BIC1").Value) OrElse dgvFirmen.SelectedRows(0).Cells("Firma_BIC1").Value Is Nothing, "", dgvFirmen.SelectedRows(0).Cells("Firma_BIC1").Value.ToString()) lblBank2.Text = If(IsDBNull(dgvFirmen.SelectedRows(0).Cells("Firma_Bankverbindung2").Value) OrElse dgvFirmen.SelectedRows(0).Cells("Firma_Bankverbindung2").Value Is Nothing, "", dgvFirmen.SelectedRows(0).Cells("Firma_Bankverbindung2").Value.ToString()) lblIban2.Text = If(IsDBNull(dgvFirmen.SelectedRows(0).Cells("Firma_IBAN2").Value) OrElse dgvFirmen.SelectedRows(0).Cells("Firma_IBAN2").Value Is Nothing, "", dgvFirmen.SelectedRows(0).Cells("Firma_IBAN2").Value.ToString()) lblBic2.Text = If(IsDBNull(dgvFirmen.SelectedRows(0).Cells("Firma_BIC2").Value) OrElse dgvFirmen.SelectedRows(0).Cells("Firma_BIC2").Value Is Nothing, "", dgvFirmen.SelectedRows(0).Cells("Firma_BIC2").Value.ToString()) lblMail1.Text = If(IsDBNull(dgvFirmen.SelectedRows(0).Cells("Firma_E_Mail_Fakturierung").Value) OrElse dgvFirmen.SelectedRows(0).Cells("Firma_E_Mail_Fakturierung").Value Is Nothing, "-", dgvFirmen.SelectedRows(0).Cells("Firma_E_Mail_Fakturierung").Value.ToString()) & " (Fakturierung)" lblMail2.Text = If(IsDBNull(dgvFirmen.SelectedRows(0).Cells("Firma_E_Mail_Mahnungen").Value) OrElse dgvFirmen.SelectedRows(0).Cells("Firma_E_Mail_Mahnungen").Value Is Nothing, "-", dgvFirmen.SelectedRows(0).Cells("Firma_E_Mail_Mahnungen").Value.ToString()) & " (Mahnungen)" Dim firmaID = dgvFirmen.SelectedRows(0).Cells("Firma_ID").Value If firmaID IsNot Nothing AndAlso IsNumeric(firmaID) Then Dim rows() As DataRow = dt.Select("mail_firmaID = " & firmaID.ToString()) If rows.Length > 0 Then dgvEmailSettings.DataSource = rows.CopyToDataTable() dgvEmailSettings.Columns("mail_firmaID").Visible = False Else dgvEmailSettings.DataSource = Nothing End If End If End If End Sub Private Function BytesToImage(value As Object) As Image If value Is Nothing OrElse IsDBNull(value) Then Return Nothing End If Dim bytes As Byte() = TryCast(value, Byte()) If bytes Is Nothing OrElse bytes.Length = 0 Then Return Nothing End If Try Using ms As New MemoryStream(bytes) Using img As Image = Image.FromStream(ms, True, True) Return New Bitmap(img) End Using End Using Catch ex As ArgumentException 'MessageBox.Show("Die gespeicherten Daten sind kein gültiges Bild." & ' vbCrLf & ' "Bytes: " & bytes.Length) Return Nothing End Try End Function Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click, PictureBox2.Click If dgvFirmen.SelectedRows.Count <> 1 Then Exit Sub Dim Firma As New cFirmen(CInt(dgvFirmen.SelectedRows(0).Cells("Firma_ID").Value)) Dim bild As Byte() = BildDateiLaden() If bild Is Nothing Then Exit Sub Dim spalte As String = "" Dim vorhandenesBild As Byte() = Nothing Select Case DirectCast(sender, PictureBox).Name Case "PictureBox1" spalte = "Firma_Logo" vorhandenesBild = Firma.Firma_Logo Case "PictureBox2" spalte = "Firma_Logo_Erweitert" vorhandenesBild = Firma.Firma_Logo_Erweitert End Select If vorhandenesBild IsNot Nothing AndAlso vorhandenesBild.Length > 0 Then Dim antwort = MessageBox.Show( "Es ist bereits ein Logo vorhanden." & vbCrLf & "Möchten Sie dieses überschreiben?", "Logo überschreiben", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If antwort = DialogResult.No Then Exit Sub End If End If Using con As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand( $"UPDATE tblFirma SET {spalte}=@Bild WHERE Firma_ID=@Firma_ID", con) cmd.Parameters.Add("@Bild", SqlDbType.VarBinary, -1).Value = bild cmd.Parameters.Add("@Firma_ID", SqlDbType.Int).Value = Firma.Firma_ID cmd.ExecuteNonQuery() End Using End Using MessageBox.Show("Logo wurde gespeichert.", "Erfolgreich", MessageBoxButtons.OK, MessageBoxIcon.Information) loadDGVMailbenachrichtigungen() End Sub Public Function BildDateiLaden() As Byte() Using ofd As New OpenFileDialog() ofd.Title = "Bild auswählen" ofd.Filter = "Bilddateien|*.jpg;*.jpeg;*.png;*.bmp;*.gif;*.webp|Alle Dateien|*.*" ofd.Multiselect = False If ofd.ShowDialog() = DialogResult.OK Then Return File.ReadAllBytes(ofd.FileName) End If End Using Return Nothing End Function Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click End Sub End Class