elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Cuando sabemos que ha insertado el registro?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cuando sabemos que ha insertado el registro?  (Leído 1,202 veces)
jrhomer

Desconectado Desconectado

Mensajes: 105



Ver Perfil WWW
Cuando sabemos que ha insertado el registro?
« en: 15 Noviembre 2006, 10:31 am »

 Hola foro... tengo un bucle que me trae algo despistado :P

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 :D) 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. :P

¿De que modo lo puedo solucionar?

Un  saludo y gracias como siempre.


En línea

ups!!
Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: Cuando sabemos que ha insertado el registro?
« Respuesta #1 en: 15 Noviembre 2006, 22:27 pm »

tienes que refrescar el rs antes de volver a tomar la posicion, lo que yo hago es hacerla directamente sobre el cn



Código:
'supongo que ya lo tendras declarado y tal
'Dim cn As New adodb.Connection    'conector datos base de datos
'grabo directamente en la base de datos mediante una sentencia SQL
cn.Execute sql




En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines