Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Correr programa para mas campos y años

Estas en el tema de Correr programa para mas campos y años en el foro de Visual Basic clásico en Foros del Web. Hola, espero poder explicar bien mi problema. Tengo una tabla en access llamada Datos, con los campos codEstacion, dia08, fecha, año, latitud, longitud, altitud, tmax, ...
  #1 (permalink)  
Antiguo 19/08/2009, 10:01
 
Fecha de Ingreso: julio-2009
Mensajes: 7
Antigüedad: 14 años, 9 meses
Puntos: 0
Información Correr programa para mas campos y años

Hola, espero poder explicar bien mi problema. Tengo una tabla en access llamada Datos, con los campos codEstacion, dia08, fecha, año, latitud, longitud, altitud, tmax, tmin. Esta tabla contiene datos diarios del año 2008, el codigo que te pongo a acontinuación, lo que hace es coger crear una carpeta correspondiente al año, en este caso 2008, luego crea otra carpeta dentro de esta que corresponde a TMAX, dentro de la cual se va almacenar archivos txt que se obtendran como salida, estos van a coorresponder a valores de 12 en 12 de TMAX para cada codestacion formandose asi los archivos de cada 12dias hasta terminar el año.
Public Sub Command0_Click()
Dim lngFichero As Long
Dim strFichero, carpetaA, carpetaB As String
Dim MiRS As DAO.Recordset 'Variable de recordset
Dim sRegistro As String 'Para guardar los datos
Dim sql, sq As String
Dim strCodestacion As String
Dim i, j As Integer
Dim fs
'Crear carpeta
Set fs = CreateObject("Scripting.FileSystemObject")
carpetaA = fs.CreateFolder("D:\Clima\2008")
carpetaB = fs.CreateFolder("D:\Clima\2008\TMAX")
j = 0
For i = 1 To 18
strFichero = carpetaB
'crear nombre de los archivos txt de salida
strFichero = strFichero & "\TMAX" + Trim(Str(i)) + ".txt"
'Crear una consulta con la tabla
sql = "SELECT * FROM Datos order by codestacion, dia08"

Set MiRS = CurrentDb.OpenRecordset(sql, dbOpenForwardOnly)
lngFichero = FreeFile(1)
strCodestacion = ""
sRegistro = ""
' Abrir las carpetas y generar los archivos
Open strFichero For Output As #lngFichero
Do While Not MiRS.EOF
If Val(MiRS("dia08")) >= ((12 * j) + 1) And Val(MiRS("dia08")) <= (12 * i) Then
If strCodestacion = Trim(MiRS!Codestacion) Then
sRegistro = sRegistro + Space(3) + Format(Trim(MiRS!tmax), "##.00", 3)
If Val(MiRS("dia08")) = (12 * i) Then
Print #lngFichero, Format(sRegistro, "##.00")
End If
Else
If strCodestacion = "" Then
strCodestacion = Trim(MiRS!Codestacion)
Print #lngFichero, Format(strCodestacion, "000###") + Space(3) + Format(Trim(MiRS!Lat), "##.0000") + Space(3) + Format(Trim(MiRS!Lon), "##.0000") + Space(3) + Trim(MiRS!Altitud)
sRegistro = Format(Trim(MiRS!tmax), "##.00")
Else
strCodestacion = Trim(MiRS!Codestacion)
sRegistro = Format(Trim(MiRS!tmax), "##.00")
Print #lngFichero, Format(strCodestacion, "000###") + Space(3) + Format(Trim(MiRS!Lat), "##.0000") + Space(3) + Format(Trim(MiRS!Lon), "##.0000") + Space(3) + Trim(MiRS!Altitud)
End If
End If
End If
MiRS.MoveNext
Loop
j = j + 1
Close #lngFichero
MiRS.Close
Set MiRS = Nothing
Next i

End Sub
El codigo funciona bien, mi pregunta es cuando la tabla tiene mas campos como tmin, prec y necesito que el programa se ejecute igual para estos campos como puedo hacerlo dentro del codigo, yo volvia a correr el programa para cada uno de estos campos, solo cambiaba mi variable de tmax por las antes mencionadas pero que podria agregar a mi codigo para que al correr el programa me genere las carpetas para TMAX, TMIN y PREC en las cuales se guarden los txt correspondientes a cada uno y si tengo varios años en la tabla como puedo crear las carpetas correapondientes para esos años y dentro de estos su TMAX, TMIN y PREC correspondiente con sus archivos txt.
Muchas gracias por tu tiempo.
  #2 (permalink)  
Antiguo 29/10/2009, 08:21
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Correr programa para mas campos y años

Hola!!
En vez de hacer todo el codigo en el CommandButton, hazlo en una funcion y le pasas el valor de la variable que desees, de esa forma en el CommandButton llamas a la funcion con los diferentes nombres de las variables y ya:

Sub Command
CreaCarpeta(TMAX)
CreaCarpeta(TMIN)
CreaCarpeta(PREC)
End sub
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:18.