Hola foro... tengo un bucle que me trae algo despistado
For N = 0 To N_EJEMPLARES
For I = 1 To 13
If DATOS(N, I) = "" Then
DATOS(N, I) = "0"
End If
Next I
P = Str(posi("VALORACION")) ' aquí nos dice cual es el ID de la tabla, nos devuelve el registro que tiene que insertar.
SQL = "INSERT INTO VALORACION VALUES ("
SQL = SQL + P + ", " ' ID_VALORACION
SQL = SQL + DATOS(N, 0) + ", "
SQL = SQL + id_concurso + ", "
SQL = SQL + COD_JUEZ + ", "
SQL = SQL + DATOS(N, 12) + ", "
SQL = SQL + DATOS(N, 13) + ", "
SQL = SQL + DATOS(N, 1) + ", "
SQL = SQL + DATOS(N, 2) + ", "
SQL = SQL + DATOS(N, 3) + ", "
SQL = SQL + DATOS(N, 4) + ", "
SQL = SQL + DATOS(N, 5) + ", "
SQL = SQL + DATOS(N, 6) + ", "
SQL = SQL + DATOS(N, 7) + ", "
SQL = SQL + DATOS(N, 8) + ", "
SQL = SQL + DATOS(N, 9) + ", "
SQL = SQL + DATOS(N, 10) + ", "
SQL = SQL + DATOS(N, 11) + ", "
SQL = SQL + "'" + DATOS(N, 14) + "'"
SQL = SQL + ")"
COM.CommandText = SQL
Set Rec = COM.Execute
Next N
El caso es que mi problema viene cuando se repite el contenido del bucle (por eso es un bucle ) y es que según he estado comprobando no da tiempo desde que se ejecuta la sentencia Set Rec = COM.Execute hasta que se vuelve a llamar a P = Str(posi("VALORACION")) y por lo tanto P es la misma que en la vuelta anterior ene l bucle y al repetirse el ID no podemos insertar el nuevo regitro en la tabla.
Si hago la ejecución paso a paso.... (como lógicamente soy mas lento que la máquina) no tengo problema pq mientras voy pasando de sentencia en sentencia da tiempo a que se inserte el registro de Set Rec = COM.Execute y cuando vuelve a pasar por P = Str(posi("VALORACION")) no tengo problema.
¿Cómo puedo solucionar esto para que no me de ese error?
he probado con Doevents... pero ne he conseguido que se solucione el problema.
También he probado añadiendo un pequeño bucle dentro del FOR en donde mientras la P sea la misma que acabamos de insertar no avancemos en la ejecución del programa.
Pero tampoco he conseguido solucionar el problema.
¿De que modo lo puedo solucionar?
Un saludo y gracias como siempre.