| 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 |
| |
|
|
|