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.
432 lines
17 KiB
432 lines
17 KiB
Imports System
|
|
Imports System.Data
|
|
Imports System.Data.SqlTypes
|
|
Imports System.Data.SqlClient
|
|
'*
|
|
' Object MyspaltenTitel
|
|
'
|
|
' Dieses Objekt liest die Daten aus der Tabelle Spalten und speichert diese in spaltendaten
|
|
' Die Daten werden für die Spaltenbezeichnung der C1Datagrids verwendet
|
|
'
|
|
' Autor: Stefan Hutter
|
|
' Datum: 2.12.2002
|
|
'*
|
|
Imports C1.Win.C1TrueDBGrid
|
|
Namespace Utils
|
|
|
|
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
|
|
MsgBox(ex.Message)
|
|
|
|
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
|
|
'Dim items As C1.Win.C1TrueDBGrid.ValueItems = daten.Columns("aktiv").ValueItems
|
|
'items.Values.Clear()
|
|
'items.Values.Add(New C1.Win.C1TrueDBGrid.ValueItem("False", False)) ' unchecked
|
|
'items.Values.Add(New C1.Win.C1TrueDBGrid.ValueItem("True", True)) ' checked
|
|
'items.Values.Add(New C1.Win.C1TrueDBGrid.ValueItem("", "INDETERMINATE")) ' indeterminate state
|
|
|
|
|
|
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, ByRef 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
|
|
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()
|
|
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
|
|
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
|
|
''' <summary>
|
|
''' Sortierung der in der DB-Tabelle Spalaten festgelegten Reihenfolge
|
|
''' </summary>
|
|
''' <param name="Tablename"></param>
|
|
''' <param name="Data"></param>
|
|
''' <returns></returns>
|
|
''' <remarks></remarks>
|
|
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, Eintragnr")
|
|
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 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, Eintragnr")
|
|
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(4)
|
|
colwidth = dr.Item(6)
|
|
order = dr.Item(7)
|
|
alshacken = dr.Item(5)
|
|
tiptext = dr.Item(8)
|
|
numberformat = dr.Item(14).ToString
|
|
Next
|
|
'Dim i As Integer
|
|
'For i = 0 To spaltendata.Rows.Count - 1
|
|
|
|
' If UCase(spaltendata.Rows(i).Item(1)) = UCase(tabelle) And UCase(spaltendata.Rows(i).Item(2)) = UCase(feld) Then
|
|
' spaltenname = spaltendata.Rows(i).Item(3)
|
|
' locked = spaltendata.Rows(i).Item(4)
|
|
' colwidth = spaltendata.Rows(i).Item(6)
|
|
' order = spaltendata.Rows(i).Item(7)
|
|
' alshacken = spaltendata.Rows(i).Item(5)
|
|
' tiptext = spaltendata.Rows(i).Item(8)
|
|
' Exit Function
|
|
' End If
|
|
'Next
|
|
|
|
End Function
|
|
|
|
Public Sub load_data()
|
|
If Me.spaltendata.Rows.Count > 0 Then Exit Sub
|
|
Dim spalten As New Utils.clsSpalten()
|
|
spaltendata.Rows.Clear()
|
|
spalten.cpMainConnectionProvider = conn
|
|
spaltendata = spalten.Select_All_Aktiv
|
|
Globals.Spaltendaten = spaltendata
|
|
End Sub
|
|
End Class
|
|
|
|
Public Class clsSpalten
|
|
Inherits DB.clsSpalten
|
|
''' <summary>
|
|
''' Purpose: SelectAll method. This method will Select all rows from the table.
|
|
''' </summary>
|
|
''' <returns>DataTable object if succeeded, otherwise an Exception is thrown. </returns>
|
|
''' <remarks>
|
|
''' Properties set after a succesful call of this method:
|
|
''' <UL>
|
|
''' <LI>iErrorCode</LI>
|
|
'''</UL>
|
|
''' </remarks>
|
|
Public Function Select_All_Aktiv() As DataTable
|
|
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
|
|
scmCmdToExecute.CommandText = "dbo.[pr_spalten_SelectAll_Aktiv]"
|
|
scmCmdToExecute.CommandType = CommandType.StoredProcedure
|
|
Dim dtToReturn As DataTable = New DataTable("spalten")
|
|
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
|
|
|
|
' // Use base class' connection object
|
|
scmCmdToExecute.Connection = m_scoMainConnection
|
|
|
|
Try
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@iErrorCode", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, m_iErrorCode))
|
|
|
|
If m_bMainConnectionIsCreatedLocal Then
|
|
' // Open connection.
|
|
m_scoMainConnection.Open()
|
|
Else
|
|
If m_cpMainConnectionProvider.bIsTransactionPending Then
|
|
scmCmdToExecute.Transaction = m_cpMainConnectionProvider.stCurrentTransaction
|
|
End If
|
|
End If
|
|
|
|
' // Execute query.
|
|
sdaAdapter.Fill(dtToReturn)
|
|
m_iErrorCode = New SqlInt32(CType(scmCmdToExecute.Parameters.Item("@iErrorCode").Value, SqlInt32))
|
|
|
|
If Not m_iErrorCode.Equals(New SqlInt32(0)) Then
|
|
' // Throw error.
|
|
Throw New Exception("Stored Procedure 'pr_spalten_SelectAll' reported the ErrorCode: " & m_iErrorCode.ToString())
|
|
End If
|
|
|
|
Return dtToReturn
|
|
Catch ex As Exception
|
|
' // some error occured. Bubble it to caller and encapsulate Exception object
|
|
Throw New Exception("clsSpalten::SelectAll::Error occured.", ex)
|
|
Finally
|
|
If m_bMainConnectionIsCreatedLocal Then
|
|
' // Close connection.
|
|
m_scoMainConnection.Close()
|
|
End If
|
|
scmCmdToExecute.Dispose()
|
|
sdaAdapter.Dispose()
|
|
End Try
|
|
End Function
|
|
|
|
End Class
|
|
End Namespace |