You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

357 lines
12 KiB

Imports System
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClien
Imports C1.Win.C1TrueDBGrid
Public Class Tabellenspalte
Private m_table As String
Private m_field As String
Private m_spaltenname As String
Private m_locked As Boolean
Private m_Width As Integer
Private m_Order As Integer
Private m_alsHacken As Boolean
Private m_tiptext As String
Private m_numberformat As String
Property ColWith() As Integer
Get
Return m_Width
End Get
Set(ByVal Value As Integer)
m_Width = Value
End Set
End Property
Property Order() As Integer
Get
Return m_Order
End Get
Set(ByVal Value As Integer)
m_Order = Value
End Set
End Property
Property Tabelle() As String
Get
Return m_table
End Get
Set(ByVal Value As String)
m_table = Value
End Set
End Property
Property Feld() As String
Get
Return m_field
End Get
Set(ByVal Value As String)
m_field = Value
End Set
End Property
Property spaltenname() As String
Get
Return m_spaltenname
End Get
Set(ByVal Value As String)
m_spaltenname = Value
End Set
End Property
Property locked() As Boolean
Get
Return m_locked
End Get
Set(ByVal Value As Boolean)
m_locked = Value
End Set
End Property
Property AlsHacken() As Boolean
Get
Return m_alsHacken
End Get
Set(ByVal Value As Boolean)
m_alsHacken = Value
End Set
End Property
Property TipText() As String
Get
Return m_tiptext
End Get
Set(ByVal Value As String)
m_tiptext = Value
End Set
End Property
Property Numberformat() As String
Get
Return m_numberformat
End Get
Set(ByVal value As String)
m_numberformat = value
End Set
End Property
Public Sub New()
End Sub
Public Sub New(ByRef daten As Object, ByRef tablename As String, ByRef ds As DataSet)
Spaltentitel_aktualisieren(daten, tablename, ds)
End Sub
Public Function getspalte()
Try
Dim myspalten As New MySpaltenTitel()
myspalten.getspalte(Me.Tabelle, Me.Feld, Me.spaltenname, Me.locked, Me.ColWith, Me.Order, Me.AlsHacken, Me.TipText, Me.Numberformat)
Catch ex As Exception
End Try
End Function
Public Function Spaltentitel_aktualisieren(ByRef daten As Object, ByRef tablename As String, ByRef ds As DataSet)
Dim anzcols As Integer
Dim i As Integer
Dim s As String
anzcols = daten.Splits(0).DisplayColumns.Count
Me.Tabelle = tablename
For i = 0 To daten.Columns.Count - 1
s = daten.Columns(i).DataField
Me.Feld = s
Me.getspalte()
daten.Columns(i).Caption = Me.spaltenname
If Me.ColWith = 0 Then
daten.Splits(0).DisplayColumns(i).Width = 0
daten.Splits(0).DisplayColumns(i).Visible = False
Else
daten.Splits(0).DisplayColumns(i).Width = Me.ColWith
End If
If Me.locked Then
daten.Splits(0).DisplayColumns(i).Locked = True
End If
If Me.AlsHacken Then
daten.Columns(i).ValueItems.Presentation = C1.Win.C1TrueDBGrid.PresentationEnum.CheckBox
End If
'Präsentation von aktiv
If LCase(daten.Columns(i).DataField) = "aktiv" Then
daten.Columns(i).ValueItems.Presentation = C1.Win.C1TrueDBGrid.PresentationEnum.CheckBox
daten.Columns(i).ValueItems.DefaultItem = True
daten.Columns(i).DefaultValue = True
daten.Columns(i).FilterText = True
End If
Select Case LCase(daten.Columns(i).DataField)
Case "erstellt_am", "erstelltam"
daten.Columns(i).DefaultValue = Now
End Select
If daten.Columns(i).DataType.Name = "DateTime" Then
daten.Columns(i).NumberFormat = "dd.MM.yyyy HH:mm:ss"
End If
If Me.Numberformat <> "" Then
daten.columns(i).numberformat = Me.Numberformat
End If
Next
ColumnOrder(tablename, daten)
daten.HeadingStyle.WrapText = False
End Function
Public Function Spaltentitel_aktualisieren(ByRef daten As Object, ByVal tablename As String, ByRef dt As DataTable, Optional ByVal Aktiv_Spalte_True_Setzen As Boolean = True)
Dim anzcols As Integer
Dim i As Integer
Dim t As New DataTable()
Dim s As String
anzcols = daten.Splits(0).DisplayColumns.Count
t = dt
Me.Tabelle = tablename
Dim st As New MySpaltenTitel
If st.Check_Table_Has_Spaltendata(tablename) = False Then Exit Function
For i = 0 To daten.Columns.Count - 1
s = daten.Columns(i).DataField
'If s = "ApplikationNr" Then
' MsgBox("Hallo")
'End If
Me.Feld = s
Me.getspalte()
If Me.spaltenname <> "" Then
daten.Columns(i).Caption = Me.spaltenname
If Me.ColWith = 0 Then
daten.Splits(0).DisplayColumns(i).Width = 0
daten.Splits(0).DisplayColumns(i).Visible = False
Else
daten.Splits(0).DisplayColumns(i).Width = Me.ColWith
End If
If Me.locked Then
daten.Splits(0).DisplayColumns(i).Locked = True
End If
If Me.AlsHacken Then
daten.Columns(i).ValueItems.Presentation = C1.Win.C1TrueDBGrid.PresentationEnum.CheckBox
End If
'Präsentation von aktiv
If LCase(daten.Columns(i).DataField) = "aktiv" And Aktiv_Spalte_True_Setzen = True Then
daten.Columns(i).ValueItems.Presentation = C1.Win.C1TrueDBGrid.PresentationEnum.CheckBox
daten.Columns(i).ValueItems.DefaultItem = True
daten.Columns(i).DefaultValue = True
daten.Columns(i).FilterText = True
End If
Select Case LCase(daten.Columns(i).DataField)
Case "erstellt_am", "erstelltam"
daten.Columns(i).DefaultValue = Now
End Select
If daten.Columns(i).DataType.Name = "DateTime" Then
daten.Columns(i).NumberFormat = "dd.MM.yyyy HH:mm:ss"
End If
If Me.Numberformat <> "" Then
daten.columns(i).numberformat = Me.Numberformat
End If
End If
Next
ColumnOrder(tablename, daten)
daten.HeadingStyle.WrapText = False
End Function
Public Function Spaltentitel_aktualisieren_Optionaler_Aktiv_Filer(ByRef daten As Object, ByRef tablename As String, ByRef dt As DataTable, Optional ByVal Aktiv_Filter As String = "")
Dim anzcols As Integer
Dim i As Integer
Dim t As New DataTable()
Dim s As String
anzcols = daten.Splits(0).DisplayColumns.Count
t = dt
Me.Tabelle = tablename
For i = 0 To daten.Columns.Count - 1
s = daten.Columns(i).DataField
Me.Feld = s
Me.getspalte()
If Me.spaltenname = "" Then
daten.Splits(0).DisplayColumns(i).Width = 0
Else
daten.Columns(i).Caption = Me.spaltenname
If Me.ColWith = 0 Then
daten.Splits(0).DisplayColumns(i).Width = 0
daten.Splits(0).DisplayColumns(i).Visible = False
Else
daten.Splits(0).DisplayColumns(i).Width = Me.ColWith
End If
If Me.locked Then
daten.Splits(0).DisplayColumns(i).Locked = True
End If
If Me.AlsHacken Then
daten.Columns(i).ValueItems.Presentation = C1.Win.C1TrueDBGrid.PresentationEnum.CheckBox
End If
'Präsentation von aktiv
If LCase(daten.Columns(i).DataField) = "aktiv" And Aktiv_Filter <> "" Then
daten.Columns(i).ValueItems.Presentation = C1.Win.C1TrueDBGrid.PresentationEnum.CheckBox
daten.Columns(i).ValueItems.DefaultItem = True
daten.Columns(i).DefaultValue = True
daten.Columns(i).FilterText = Aktiv_Filter
End If
Select Case LCase(daten.Columns(i).DataField)
Case "erstellt_am", "erstelltam"
daten.Columns(i).DefaultValue = Now
End Select
If daten.Columns(i).DataType.Name = "DateTime" Then
daten.Columns(i).NumberFormat = "dd.MM.yyyy HH:mm:ss"
End If
If Me.Numberformat <> "" Then
daten.columns(i).numberformat = Me.Numberformat
End If
End If
Next
ColumnOrder(tablename, daten)
daten.HeadingStyle.WrapText = False
End Function
Public Function ColumnOrder(ByVal Tablename As String, ByRef Data As C1TrueDBGrid)
Dim spaltendata As DataTable = Globals.Spaltendaten
Dim dv() As DataRow
Dim dr As DataRow
Dim dc As New Collection
dv = spaltendata.Select("Tabelle='" & Tablename & "'", "Reihenfolge desc, spaltenr")
For Each c As C1DisplayColumn In Data.Splits(0).DisplayColumns
dc.Add(c)
Next
While Data.Splits(0).DisplayColumns.Count > 0
Data.Splits(0).DisplayColumns.RemoveAt(0)
End While
For Each dr In dv
For Each e As C1DisplayColumn In dc
If e.Name = dr.Item(3) Then
Data.Splits(0).DisplayColumns.Insert(0, e)
End If
Next
Next
End Function
End Class
Public Class MySpaltenTitel
Private spaltendata As DataTable = Globals.Spaltendaten
Sub New()
load_data()
End Sub
Sub dispose()
spaltendata.Dispose()
Me.dispose()
End Sub
Public Function Check_Table_Has_Spaltendata(ByVal tab As String) As Boolean
If spaltendata.Rows.Count = 0 Then load_data()
Dim dv() As DataRow
dv = spaltendata.Select("Tabelle='" & tab + "'")
If dv.Length = 0 Then Return False Else Return True
End Function
Public Function getspalte(ByVal tabelle As String, ByVal feld As String, ByRef spaltenname As String, ByRef locked As Boolean, _
ByRef colwidth As Integer, ByRef order As Integer, ByRef alshacken As Boolean, ByRef tiptext As String, ByRef numberformat As String)
If spaltendata.Rows.Count = 0 Then load_data()
Dim dv() As DataRow
Dim dr As DataRow
dv = spaltendata.Select("Tabelle='" & tabelle & "' and tabellenspalte='" & feld & "'", "Reihenfolge, Spaltenr")
If dv.Length = 0 Then
spaltenname = ""
locked = True
colwidth = 0
order = 0
alshacken = False
tiptext = ""
numberformat = ""
End If
For Each dr In dv
spaltenname = dr.Item(3)
locked = dr.Item(12)
colwidth = dr.Item(4)
order = dr.Item(5)
alshacken = dr.Item(13)
tiptext = dr.Item(6)
numberformat = dr.Item(7).ToString
Next
End Function
Public Sub load_data()
If Me.spaltendata.Rows.Count > 0 Then Exit Sub
Dim db As New clsDB
spaltendata.Rows.Clear()
db.Get_Spaltendata()
spaltendata = db.dsDaten.Tables(0)
Globals.Spaltendaten = spaltendata
End Sub
End Class