Rellenar tres filas del Grid

ccortes
25 de Julio del 2003
Como puedo hacer para digitar datos en tres filas de un grid y luego guardar la informacion en un campo de una tabla, ademas de que tipo de datos(texto, memo)deberia ser el campo (en Access), para poder guardar los tres datos del grid en un solo campo

Zulu
25 de Julio del 2003
Para escribir datos en un grid tienes que usar los eventos KeyDown y KeyPress es ese grid y comprobar el dato introducido. Te pongo un ejemplo de un código que tengo yo para introducir datos numéricos en una malla (permito los datos numéricos en todos los campos excepto en la primera fila del grid, que es el título del campo y ahí no quiero que se escriba nada (aún no he puesto gestión de errores :P):

***************************************

Private Sub Malla_KeyDown(KeyCode As Integer, Shift As Integer)
If Malla.Row > 0 Then ' si es la fila 0, no dejamos escribir...
Select Case KeyCode
Case vbKeyDelete: ' pulsado Supr: borramos todo el texto y ponemos el valor a 0
Malla.Text = 0
End Select
End If
End Sub

Private Sub Malla_KeyPress(KeyAscii As Integer)
If Malla.Row > 0 Then ' si la fila es 0, no permitimos escribir
Select Case KeyAscii
Case 48 To 57: ' hemos pulsado un número
' primero comprobamos si el valor de la malla era ya 0;
'si es así, eliminamos el 0; si no, añadimos al texto el nuevo dato
If Malla.Text = "0" Then
Malla.Text = Chr(KeyAscii)
Else
Malla.Text = Malla.Text & Chr(KeyAscii)
End If
Case 44, 46: ' coma y punto; lo pasamos a coma
If InStr(Malla.Text, ",") = 0 Then
Malla.Text = Malla.Text & ","
End If
Case vbKeyReturn: ' con enter pasamos de un dato (modificable) a otro;
' solo tengo una fila más la cabecera,
' así que no me preocupo en controlar las filas
If Malla.Col = Malla.Cols - 1 Then
Malla.Col = 1
Else
Malla.Col = Malla.Col + 1
End If
Case vbKeyBack: ' se pulso backspace; borramos un caracter
If Len(Malla.Text) > 1 Then ' comprobamos que no estuviese ya vacío; si no, daría error
Malla.Text = Left(Malla.Text, Len(Malla.Text) - 1)
ElseIf Len(Malla.Text) = 1 Then
' si borramos el último caracter, le ponemos un 0 (valor por defecto)
Malla.Text = 0
End If
End Select
End If
End Sub

********************************

Lo del tipo de datos para access depende del tamaño máximo que esperes tener en la suma de esos campos; si sobrepasa los 255 caracteres (incluyendo, supongo, caracteres de separación para saber qué campo es cada uno) usa un memo; si no lo supera, mejor un texto