Programación en Gambas2
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Tyme mismatch; wanted string

Ir abajo

Tyme mismatch; wanted string Empty Tyme mismatch; wanted string

Mensaje  jebus87 Jue Jul 23, 2009 8:15 pm

Hola que tal, soy nuevo en gambas2, aunque conozco un poco de visual basic, el problema que tengo es que al ejecutar un programa en Gambas2 desarrollado en Gambas 1.13 me marca el error: "Type mismatch; wanted string, got Blob instead",

Dejo el codigo y señalo donde me marca el error, tambien les informo que cambie la instruccion System.Home por User.Home, pues asi lo maneja Gambas2, espero me puedan ayudar, te antemano muchas gracias!!!


PUBLIC SUB btnGenerar_Click()
DIM aFechaI AS Variant
DIM aFechaT AS Variant
DIM sFecha AS String
DIM i AS Integer
DIM j AS Integer
DIM vFechas AS CFechas
DIM sigFecha AS Variant
''Iniciamos con la validación de datos
IF valida_datos() THEN
SELECT Message.Question("¿Proceder a Generar las faltas?", "Si", "No")
CASE 1
aFechaI = Split(txtFecIni.Text, "/")
aFechaT = Split(txtFecFin.Text, "/")
vFechas = NEW CFechas(txtFecIni.Text, txtFecFin.Text)
i = vFechas.totalDias()
FOR j = 0 TO i
sigFecha = vFechas.nextFecha()
proceso(sigFecha)
NEXT

Message.Info("Proceso Terminado")
txtBar.Text = "Procesando Terminado."
btnCancelar.Text = "Terminar"
ver_resultados(txtFecIni.Text, txtFecFin.Text)
graba_Archivo(txtFecIni.Text, txtFecFin.Text)
Message.Info("Se genero el archivo " & User.Home & "/" & "Faltas.csv" & " con el detalle")
CASE 2
Message.Info("Operacion Cancelada")
END SELECT
ELSE
Message.Error("Revise la informacion capturada")
txtFecIni.SetFocus()
END IF
END

PRIVATE FUNCTION valida_datos() AS Boolean
DIM bOK AS Boolean
DIM aFecha AS Variant
bOK = TRUE
''Validamos la primera fecha:
IF Len(Trim(txtFecIni.Text)) = 10 THEN
IF InStr(txtFecIni.Text, "/") = 0 THEN
Message.Error("El formato de Fecha Inicial debe ser dd/mm/yyyy")
bOK = FALSE
ELSE
aFecha = Split(txtFecIni.Text, "/")
IF NOT (IsNumber(Val(aFecha[0])) AND IsNumber(Val(aFecha[1])) AND IsNumber(Val(aFecha[2]))) THEN
Message.Error("La Fecha inicial no es una fecha válida")
bOk = FALSE
END IF
END IF
ELSE
Message.Error("El formato de Fecha Inicial debe ser dd/mm/yyyy")
bOK = FALSE
END IF
''Validamos la segunda fecha
IF Len(Trim(txtFecFin.Text)) = 10 THEN
IF InStr(txtFecFin.Text, "/") = 0 THEN
Message.Error("El formato de Fecha Final debe ser dd/mm/yyyy")
bOK = FALSE
ELSE
aFecha = Split(txtFecFin.Text, "/")
IF NOT (IsNumber(Val(aFecha[0])) AND IsNumber(Val(aFecha[1])) AND IsNumber(Val(aFecha[2]))) THEN
Message.Error("La Fecha final no es una fecha válida")
bOk = FALSE
END IF
END IF
ELSE
Message.Error("El formato de Fecha Final debe ser dd/mm/yyyy")
bOK = FALSE
END IF
RETURN bOK
END

PRIVATE FUNCTION proceso(peFecha AS String) AS Boolean
DIM bConsulta AS Boolean
DIM lSql AS String
txtBar.Text = "Procesando Informacion..."
''Punto 1
bConsulta = $gCon.executa_consulta("drop table if exists `si_cap`.`gen_faltas`")
''Punto 2
IF bConsulta THEN
txtBar.Text = "Determinando faltas del " & peFecha
lSql = "create table `si_cap`.`gen_faltas` as "
lSql = lSql & "select e.identificador, e.clave_nomina, "
lSql = lSql & "concat_ws(' ',trim(e.a_paterno), trim(e.a_materno),trim(e.nombre)) as nombre, "
lSql = lSql & "d.descripcion as departamento, "
lSql = lSql & "c.descripcion as clasificacion, "
lSql = lSql & "'" & peFecha & "' as fecha,"
lSql = lSql & "1 as falta, "
lSql = lSql & "0 as tipo_justificante "
lSql = lSql & "from empleado e, departamento d, clasificacion c "
lSql = lSql & "where e.estatus_id in (1,3) "
lSql = lSql & "and e.clave_nomina not in (" & txtExclud.Text & ") "
IF NOT (txtFiltro.Text = "*") THEN
lSql = lSql & "and e.clave_nomina in (" & txtFiltro.Text & ") "
END IF
lSql = lSql & "and d.identificador = e.departamento_id "
lSql = lSql & "and c.identificador = e.clasificacion_id "
lSql = lSql & "and e.identificador not in (select distinct(empleado_id) "
lSql = lSql & " from control_acceso "
lSql = lSql & " where str_to_date(fecha,'%d/%m/%Y') = str_to_date('" & peFecha & "','%d/%m/%Y') ) "
bConsulta = $gCon.executa_consulta(lSql)
ELSE
Message.Error("Error en el proceso [punto 2]")
END IF
''Punto 3
IF bConsulta THEN
lSql = "update gen_faltas gf "
lSql = lSql & "set tipo_justificante = (select max(tipo_justificante_id) "
lSql = lSql & "from justificante "
lSql = lSql & "where empleado_id = gf.identificador "
lSql = lSql & "and str_to_date(gf.fecha,'%d/%m/%Y') between "
lSql = lSql & " str_to_date(fecha_inicial,'%d/%m/%Y') "
lSql = lSql & "and str_to_date(if(LENGTH(fecha_final)=0,fecha_inicial,fecha_final),'%d/%m/%Y') "
lSql = lSql & "and tipo_justificante_id in (1,2,4,5,7,9,10) )"
bConsulta = $gCon.executa_consulta(lSql)
ELSE
Message.Error("Error en el proceso [punto 3]")
END IF
''Punto 4
IF bConsulta THEN
lSql = "delete from `si_cap`.`faltas` where str_to_date(fecha,'%d/%m/%Y') = str_to_date('" & peFecha & "','%d/%m/%Y') "
bConsulta = $gCon.executa_consulta(lSql)
ELSE
Message.Error("Error en el proceso [punto 4]")
END IF
''Punto 5
IF bConsulta THEN
lSql = "insert into `si_cap`.`faltas` "
lSql = lSql & "select f.identificador, f.clave_nomina, f.nombre, f.departamento, f.clasificacion, "
lSql = lSql & " f.fecha, f.tipo_justificante "
lSql = lSql & "from `si_cap`.`gen_faltas` f, `si_cap`.`horario_det` h"
lSql = lSql & " WHERE h.empleado_id = f.identificador "
lSql = lSql & " AND str_to_date(h.fecha,'%d/%m/%Y') = str_to_date(f.fecha,'%d/%m/%Y')"
lSql = lSql & " AND h.mca_laborable = 'S' "
bConsulta = $gCon.executa_consulta(lSql)
ELSE
Message.Error("Error en el proceso [punto 5]")
END IF
RETURN TRUE
END

PRIVATE SUB ver_resultados(peFecIni AS String, peFecFin AS String)
DIM hTable AS Table
DIM hField AS ResultField
DIM sField AS String
DIM iInd AS Integer
DIM iLen AS Integer

$rData = $gCon.regresa_rs("select str_to_date(fecha,'%d/%m/%Y') as fecha, tipo_justificante, count(*) from faltas where str_to_date(fecha,'%d/%m/%Y') between str_to_date('" & peFecIni & "','%d/%m/%Y') and str_to_date('" & peFecFin & "','%d/%m/%Y') group by fecha order by str_to_date(fecha,'%d/%m/%Y')")

tbvData.Columns.Count = 0
tbvData.Columns.Count = $rData.Fields.Count

FOR EACH hField IN $rData.Fields
WITH hField
tbvData.Columns[iInd].Width = WidthFromType(tbvData, .Type, .Length, .Name)
END WITH
INC iInd
NEXT 'iteration of result data
tbvData.Rows.Count = $rData.Count
END

PRIVATE FUNCTION WidthFromType(hCtrl AS control, iType AS Integer, iLength AS Integer, sTitle AS String) AS Integer
DIM iWidth AS Integer
SELECT CASE iType
CASE gb.Boolean
iWidth = hCtrl.Font.Width(Str(FALSE)) + 32
CASE gb.Integer
iWidth = hCtrl.Font.Width("1234567890") + 16
CASE gb.Float
iWidth = hCtrl.Font.Width(CStr(Pi) & "E+999") + 16
CASE gb.Date
iWidth = hCtrl.Font.Width(Str(Now)) + 16
CASE gb.String
IF iLength = 0 THEN iLength = 255
iLength = Min(32, iLength)
iWidth = hCtrl.Font.Width("X") * iLength + 16
END SELECT
iWidth = Max(iWidth, hCtrl.Font.Width(sTitle) + Cool
RETURN iWidth
END

PUBLIC SUB tbvData_Data(Row AS Integer, Column AS Integer)

$rData.MoveTo(Row)
tbvData.Data.Text = Str($rData[tbvData.Columns[Column].Text])

END

PRIVATE SUB graba_Archivo(peFecIni AS String, peFecFin AS String)
DIM sArchivo AS String
DIM fArchivo AS File
DIM sRegistro AS String
DIM rConsulta AS Result

sArchivo = User.Home & "/" & "Faltas.csv"
TRY OPEN sArchivo FOR WRITE CREATE AS #fArchivo
IF ERROR THEN
Message.Error("Error[graba_Archivo]:" & Error.Text)
END IF
''Se imprime el encabezado
PRINT #fArchivo, "empleado_id; clave_nomina; nombre; departamento; clasificacion; fecha; tipo_justificante"
''Imprimimos el cuerpo
rConsulta = $gCon.regresa_rs("select empleado_id, clave_nomina, nombre, departamento, clasificacion, fecha, tipo_justificante from `si_cap`.`faltas` where str_to_date(fecha,'%d/%m/%Y') between str_to_date('" & peFecIni & "','%d/%m/%Y') and str_to_date('" & peFecFin & "','%d/%m/%Y') and tipo_justificante = 0 order by departamento, clave_nomina")
FOR EACH rConsulta
sRegistro = rConsulta["empleado_id"] & "; "
sRegistro = sRegistro & rConsulta["clave_nomina"] & "; "
sRegistro = sRegistro & rConsulta["nombre"] & "; " *************************AQUI ME MARCA EL ERROR******************************************************************************************************************
sRegistro = sRegistro & rConsulta["departamento"] & "; "
sRegistro = sRegistro & rConsulta["clasificacion"] & "; "
sRegistro = sRegistro & rConsulta["fecha"] & "; "
sRegistro = sRegistro & rConsulta["tipo_justificante"]
PRINT #fArchivo, sRegistro
NEXT

CLOSE #fArchivo
END

PUBLIC SUB Label1_MouseDown()

END

jebus87

Mensajes : 1
Fecha de inscripción : 22/07/2009

Volver arriba Ir abajo

Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.