wie kann ich bei diesem Proggi, bei dem Grid den inhalt der spalte datum durch die Function VB_CTime laufen lassen?
Option Explicit
' Die Deklarationen sind fast wie bei ADO
' Connection-Object
Private oConn As New MYSQL_CONNECTION
' Recordset-Object
Private oRs As MYSQL_RS
' Servername und Benutzerdaten
Private Const sServer As String = "ip"
Private Const sUsername As String = "user"
Private Const sPassword As String = "passwd"
Private Const sDBName As String = "db"
Private Const sTable As String = "table"
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As _
Long) As Long
Public Function VB_CTime(ByVal dblSec As Double) As Variant
' dblSec = vergangene Sekunden seit 1.1.1970
Dim vStart As Variant
' Fehlerbehandlung einschalten, falls
' dblSec außerhalb des Gültigkeitbereichs
On Error Resume Next
vStart = DateSerial(1970, 1, 1)
VB_CTime = DateAdd("s", dblSec, vStart)
End Function
Private Sub cmdQueryTable_Click()
Dim sSQL As String
Dim bError As Boolean
' Alle Datensätze selektieren
sSQL = "SELECT * FROM " & sTable
Set oRs = oConn.Execute(sSQL)
bError = MySQL_Error()
If Not bError Then
' Daten im Grid anzeigen
FillGrid
End If
' Recordset schließen
If Not oRs Is Nothing Then oRs.CloseRecordset
Set oRs = Nothing
End Sub
' Funktion zum Füllen des FlexGrids
Function FillGrid()
Dim i As Long
Dim nRow As Long
With MSFlexGrid1
' Zählvariable für die aktuelle Zeile
nRow = 0
.Rows = oRs.RecordCount + 1
While Not oRs.EOF
nRow = nRow + 1
For i = 0 To oRs.FieldCount - 1
' Aktuellen Wert ins FlexGrid kopieren
.TextMatrix(nRow, i) = oRs.Fields(i).Value
.Col = i 'Spalte zuweisen
Next i
' auch hier gibt es ein "MoveNext" :-)
oRs.MoveNext
Wend
If .Row > 0 Then .Row = 1
.Enabled = (.Rows > 1)
End With
End Function
' Ein par Einstellungen fürs FlexGrid
Private Sub Form_Load()
With Me.MSFlexGrid1
' 3 Spalten und zunächst nur 1 Zeile für
' die Spaltenüberschriften
.Cols = 5
.Rows = 1
' Kein Fokus-Rechteck, sondern FullRowSelect-Modus
.FocusRect = flexFocusNone
.Col = 0: .ColSel = .Cols - 1
' Spaltenüberschriften
.TextMatrix(0, 0) = "ID"
.TextMatrix(0, 1) = "Datum"
.TextMatrix(0, 2) = "Betreff"
.TextMatrix(0, 3) = "Art"
.TextMatrix(0, 4) = "Beschreibung"
' Spaltenbreiten
.ColWidth(0) = 500
.ColWidth(1) = 1300
.ColWidth(2) = 1700
.ColWidth(3) = 1200
.ColWidth(4) = 5062
' zunächst inaktiv
.Enabled = False
End With
End Sub
Private Sub cmdConnect_Click()
' oConn.OpenConnection "Rechnername", _
' "Ihr Benutzername", "Ihr Passwort", _
' "Name der Datenbank"
'
' Wir öffnen die Verbindung zum MySQL Server
' Statt 'Localhost' kann auch die IP verwendet werden. Diese
' erfahren Sie im WinMySQLAdmin im Register'Environment',
' wenn Sie auf 'Extendet Server Status' klicken.
oConn.OpenConnection sServer, _
sUsername, sPassword, sDBName
' Statusabfrage
If (oConn.State = MY_CONN_CLOSED) Then
' Falls Verbindung nicht geöffnet, Fehlerangabe!
MySQL_Error
Else
' Bei erfolgreicher Verbindung, Verbindungsdaten ausgeben
MsgBox "Connected to: www.crivi.ch.vu", _
vbInformation, "www.crivi.ch.vu"
' Prüfen, ob Tabelle existiert
Set oRs = oConn.Execute("SELECT * FROM " & sTable)
If oConn.Error.Number = 0 Then
' Daten anzeigen
FillGrid
oRs.CloseRecordset
End If
cmdConnect.Enabled = False
cmdDisconnect.Enabled = True
' Recordset sschließen
If Not oRs Is Nothing Then oRs.CloseRecordset
Set oRs = Nothing
End If
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
' Disconnecten
cmdDisconnect.Value = True
End Sub
Private Sub MSFlexGrid1_RowColChange()
' Prüfen
If MSFlexGrid1.Rows > 0 Then MSFlexGrid1.Col = 0
End Sub Also mein Problem ist, dass das datum als unix timestamp in der db ist. und ich will es als datum anzeigen, aber ohne Zeit. wie mach ich das? |