El Guru Programador
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Foro de Visual Basic/VB.NET
Foros del Guru > Visual Basic/VB.NET
Usuario IMPRESIONANTE. A ver si alguien lo...
Desconocido
Enviado - 7/5/2003
 
x favor, a ver si alguien puede decirme x q no funciona este trozo de código:

'Generamos el nº de acción correctora
Dim MiFecha, MiAño
Dim año As Integer
Dim cdg, codigo, cdg3 As String

MiFecha = Now
MiAño = Year(MiFecha)
MiAño = MiAño - 2000
cdg = MiAño
If MiAño < 10 Then
codigo = "0"
codigo = codigo + cdg
End If
codigo = "/" + codigo

'Busco todas las desviaciones q haya registradas de ese año para contarlas
Dim dbs As Database
Dim rst As Recordset
Dim SQL As String
Dim n

Set dbs = CurrentDb
SQL = "SELECT * FROM AccionesCorrectoras WHERE (numeroAccion LIKE '*" + cdg + "')"
Set rst = dbs.OpenRecordset(SQL)
.........
..........


A ver, comento lo q falla:
1.- al llegar a este bloque:
If MiAño < 10 Then
codigo = "0"
codigo = codigo + cdg
End If
no hace la concatenación de "codigo + cdg". Directamente pisa el contenido de "codigo" y mete encima el contenido de "cdg". Osea, q si debería aparecer en "codigo" un 03 lo q aparece es un 3. No hay forma de concatenarlo. (!!!!)

2.- Al salir de ese If se encuentra la instrucción "codigo = "/" + codigo". Es exactamente la misma q se encuentra dentro del bloque If (la q me pisaba un valor con el otro). Vale, pues cnd llega a aquí, ni pisa el valor ni nada. Directamente da error de compilación y dice q los tipos no son compatibles (!!!!!!!!)

3.- Si ignoramos los fallos anteriores y seguimos ejecutando, al llegar a la instrucción
SQL = "SELECT * FROM AccionesCorrectoras WHERE (numeroAccion LIKE '*" + cdg + "')"
hace lo mismo q en caso 2: el programa explota y dice q los tipos no son compatibles (!!!!!!!!!!!!)

No he querído seguir investigando xq me da miedo pensar q más me puede decir. El caso es q el mismo código está metido en otro botón y ha funcionado siempre de maravilla (!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) x q?? x favor, q alguien me diga algo. Gracias
 
fmarredo
355 Mensaje(s)
Enviado - 7/5/2003
 
El problema que tenés es que estás usando variables de tipo Variant. en la línea Dim cdg, codigo, cdg3 As String las variables cdg y código son variant y cdg3 es string. Para declararlas como string a las 3 tenés que especificarlo:

Dim cdg As String , codigo As String, cdg3 As String

El problema 1 ocurre porque hace la suma aritmética en vez de la concatenación. Usá el operador & para concatenar en vez del +.
El 2 ocurre porque asume que en código hay un número y cuando quiere hacer la suma te da el error de tipos de datos.

Conclusión: revisá la declaración de las variables y usá el & para concatenar u el + para sumas aritméticas.
Saludos
 
 

 

Contactos myStudio Network