DataGrid -> Text einer beliebigen Zelle

11/09/2007 - 09:12 von alois2805 | Report spam
Hallo!

Wie bekomme ich in VB6 bei einem DataGrid den Text eines beliebigen Feldes?

Gruss
 

Lesen sie die antworten

#1 Peter Götz
11/09/2007 - 10:37 | Warnen spam
Hallo Namenlooser,

wir stellen uns hier üblicherweise mit unserem vollen
Namen (Vor- u. Zuname) vor, wàre schön, wenn Du
Dich dieser Gepflogenheit anschliessen würdest.

Wie bekomme ich in VB6 bei einem DataGrid
den Text eines beliebigen Feldes?



Kleines Beispiel.
' // Code in einer "Form1" mit 1 DataGrid "DGrid"
Option Explicit
Dim mRS As ADODB.Recordset
Dim mRScl As ADODB.Recordset

Private Sub DGrid_MouseMove _
(Button As Integer, _
Shift As Integer, _
X As Single, _
Y As Single)

Dim Row As Integer
Dim Col As Integer
Row = DGrid.RowContaining(Y)
Col = DGrid.ColContaining(X)
If Row > -1 Then
If Col > -1 Then
On Error Resume Next
mRScl.Bookmark = _
DGrid.RowBookmark(Row)

If Err.Number = 0 Then
Me.Caption = _
"RecNum: " & _
CStr(mRScl.AbsolutePosition) & _
" Row: " & CStr(Row) & _
" Col: " & CStr(Col) & " " & _
CStr(mRScl.Fields(Col).Value)
Else
Me.Caption = ""
End If
On Error GoTo 0
End If
End If
End Sub

Private Sub DGrid_RowColChange _
(LastRow As Variant, _
ByVal LastCol As Integer)

Dim strBuffer As String
strBuffer = mRS.Fields(DGrid.Col).Name & _
" : " & _
CStr(mRS.Fields(DGrid.Col).Value)
MsgBox strBuffer, vbInformation
End Sub

Private Sub Form_Load()
CreateData
Set DGrid.DataSource = mRS
DGrid.AllowAddNew = True
DGrid.AllowDelete = True
DGrid.AllowUpdate = True
End Sub

Private Sub CreateData()
Dim i As Integer

Set mRS = New ADODB.Recordset
With mRS
.Fields.Append "ID", adInteger
.Fields.Append "Bez", adVarChar, 16
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockBatchOptimistic
.Open
For i = 1 To 12
.AddNew
.Fields(0).Value = i
.Fields(1).Value = MonthName(i)
.Update
Next i
End With
Set mRScl = mRS.Clone
End Sub

Private Sub Form_Resize()
Dim X As Single
Dim Y As Single
X = Me.ScaleX(10, vbPixels, Me.ScaleMode)
Y = Me.ScaleY(10, vbPixels, Me.ScaleMode)

DGrid.Move _
X, Y, _
Me.ScaleWidth - 2 * X, _
Me.ScaleHeight - 2 * Y
End Sub
' \\\ E N T E

In DGrid_RowColChange() wird mit Hilfe der im DGrid
akt. Spaltennummer auf das im akt. Datensatz von mRS
korrespondierende Feld zugegriffen.

In DGrid_MouseMove() wird mit Hilfe der Methode
DGrid.RowBookmark(Row) die Bookmark des Datensatzes
ermittelt, der sich gerade unter der akt. Mausposition
befindet. Der Datensatzzeiger von mRScl (einem Clone von
RS) wird dann auf die entspr. Bookmark gesetzt und es kann
der Inhalt dies entsprechenden Feldes des so gewàhlten
Datensatzes ausgelesen werden. Der akt. Datensatzzeiger
im eigentlichen Recordset (mRS) bleibt dabei unveràndert.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen