Hola erbunson!
Muchas gracias por esto me ayuda un monton, aunque como esperabas me provoca varias cnsultas.
1. Este codigo lo tienes en un modulo.bas o en el programa.
2. Si he entendido bien con la función "Select Case LCase(Opcion)" lo que estas haciendo son cuatro sentencias que llamas a tu antojo o necesidad como si fuesen variables ¿Es asi?¿Es lo mismo a crear varias subrutinas como (leer(), grabar(), etc.?si es asi, ¿esto seria valido para cuando tienes que crear un número elevado de subrutinas y asi poderlas agrupar para hacer mas comprensible el codigo?.
3. En esta parte de codigo :
Código vb:
Ver originalSub FicheroClientes(Opcion As String, Registro As Single)
' Variable de número de Fichero. Estática para guardarla en la Rutina.
Static Numero As Integer
' Si Número = Cero el archivo no está abierto. Lo asignamos y Abrimos.
If Numero = 0 Then
Numero = FreeFile
Open "CLIENTES.DAT" For Random As #Numero Len = 256
End If
Veo que por un lado asignas un canal a la variable "Numero" o que use el FreeFile y despues en el Open siempre habres un canal en vez de usar el FreeFile ¿Porque, no es mejor usar siempre el FreeFile? y despues en la sentencia Open le das siempre el tamaño de 256 que es lo mismo que "CamposClientes", ¿lo haces por no llamar a "CamposClientes" en cada LEN?
4.Veo que utilizas la funcion "Sub" sola, referente a ella ypor mucho que he buscado siempre me la asocian o con un "Private Sub" o con un "Sub Main" y no sola, en tu caso como se comporta ¿Porque de Sub a solas.?
5. Y para rematar en varias sentencias If por ejemplo :
If Registro = 0 Or Registro > LOF(Numero) / 256 Then
Registro = -1
coges el valor del tamaño del registro y lo divides por 256 ¿Porque?
Se que son trucos de perro viejo por eso te lo pregunto.
Un saludo
PDTA.:
Una consulta mas .:
En este codigo :
Código C:
Ver originalPrivate Sub GridPonerDato(Grid As MSFlexGrid, Fila As Single, Columna As Single, Dato As Variant)
' Si la fila no existe, la añadimos. La columna es de suponer que ya le hemos puesto cabecera
If Grid.Rows - 1 < Fila Then Grid.Rows = Fila + 1
Grid.TextMatrix(Fila, Columna) = Dato
End Sub
Si tengo tres grillas que se llaman MsFlexgrid1, MsFlexgrid2 y MsFlexgrid3
y para llamarlas con :
Código vb:
Ver originalCALL GridPonerDato (Grid, 0, 0, "Dato")
He probado esto, con MsgBox el nomdre es bueno, pero en el CALL me da el error "el tipo de argumento de ByRef no coincide" ¿Porque?
Código vb:
Ver originalDim i As Integer, Grid As String
i = 1
For i = i To 3
Grid = "MsFlexgrid" & i
Call GridPonerDato(Grid, 0, 0, "25")
en cambio si al codigo no le declaro el "Grid As String"
el error que me da es "Variable no definida"
¿Como renombro la Grilla?
Saludo2