
02/12/2009, 14:36
|
| | Fecha de Ingreso: septiembre-2009 Ubicación: Venezuela
Mensajes: 92
Antigüedad: 15 años, 8 meses Puntos: 1 | |
Como calcular dias hábiles en visual basic 6 y mysql. Buenas tardes estimados amigos foristas :
Estoy desarrollando una aplicación donde pueda llevar el control de días hábiles para la ejecución de un trabajo.... Hice mi tabla en MYSQL llamada "feriados", aqui se encuentra el dia y el mes únicamente.
Ahora bien... encontré un código en el foro y me pareció excelente pero solo me descuenta los sábados y domingos.... no se como hacer para que me tome el feriado y lo reste también....
Estoy trabajando en visual basic 6 y mysql. Los controles para llevar el conteo de los dias lo hago a través de un dtpicker en format dd/mm ya que en mysql lo almacené como varchar para que no me tomara el año...
Les anexo el código.
Private Sub Command1_Click()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim dif, i As Integer
fecha_inicial = Format(DTPicker1, "dd/mm")
fecha_final = Format(DTPicker2, "dd/mm")
Set cnn = New ADODB.Connection
cnn.ConnectionString = "DRIVER={mysql odbc 3.51 driver};" _
& "SERVER=192.168.112.23;" _
& "Database=devel;" _
& "UID=Efkar56Freg3;" _
& "password=NamfloEFBAM76;" _
& "port=3306;option3 "
cnn.Open
'On Error Resume Next
Set rst = New ADODB.Recordset
With rst
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open "SELECT fecha FROM feriados WHERE MONTH (fecha) = " & Month(fecha_inicial) + i & " AND DAY(fecha) = " & Day(fecha_inicial) + i, cnn
End With
dif = CDate(Format(fecha_final, "dd/mm")) - CDate(Format(fecha_inicial, "dd/mm"))
For i = 1 To dif
If Weekday(CDate(fecha_inicial) + i, vbMonday) = 6 Or Weekday(CDate(fecha_inicial) + i, vbMonday) = 7 Then
dif = dif - 1
Else
If rst.BOF = False And rst.EOF = False Then
dif = dif - 1
End If
End If
Next i
MsgBox "Dias habiles = " & dif, vbInformation, "Resultado"
End Sub
Cuando le digo que me calcule los dias hábiles del mes de febrero del año 2010 me dice que son 20 cuando en realidad son 18 (por los dias de semana santa). Yo le hago el select para que me los ubique y los descuente pero de igual forma no los resta...
AUXILIO POR FAVOR !!!!
saludos !!
Carlos. |