Home Foros Foro dudas Foro de Access Como extraer datos de una tabla, procesarlos y guardarlos en otra tabla

Como extraer datos de una tabla, procesarlos y guardarlos en otra tabla

Viendo 2 entradas - de la 1 a la 2 (de un total de 2)
  • Autor
    Entradas
  • #5005

    Daniel
    Participante

    Hola amigos:

    He creado un código para calcular el retraso medio de los pedidos. Cuándo visualizo los datos en la ventana de inmediato son correctos, sin embargo, el valor que se inserta en las tablas es 0.

    He utilizado códigos muy similares para otros cálculos y traspasos de información en otros módulos de la aplicación y siempre ha funcionado bien, por tanto, no entiendo porque en este módulo no funciona.

    La variable “Numped” es publica, por eso no aparece declarada en este código.

    El código es:

    Sub retmed()

     

    Dim inst9 As String

    Dim ins9 As String

    Dim instr9 As String

    Dim mc9 As New Connection

    Set mc9 = CurrentProject.Connection

    Dim mr9 As New Recordset

    Dim ret1  As Byte

    Dim retmed  As Byte

     

    inst9 = “SELECT Tabla1.num_pedido, Tabla1.Retraso, Count(Tabla1.Retraso) AS CuentaDeRetraso INTO tRet ” _

    & “FROM Tabla1 GROUP BY Tabla1.num_pedido, Tabla1.Retraso HAVING Tabla1.num_pedido>0;”

    CurrentDb.Execute inst9

     

    ins9 = “SELECT tRet.Retraso, Sum(tRet.CuentaDeRetraso) AS sumret ” _

    & “FROM tRet GROUP BY tRet.Retraso;”

     

    mr9.Open ins9, mc9

     

    instr9 = “INSERT INTO Tabla2 (num_pedido,retraso,ret_med) values (” & numped & “,” & ret1 & “,” & retmed & “)”

     

    While mr9.EOF = False

    ret1 = mr9!retraso

    retmed = mr9!sumret / numped

     

    Debug.Print numped & ” – Retraso: ” & ret1 & ” Suma: ” & mr9!sumret & ” – Media: ” & retmed

     

    CurrentDb.Execute instr9

     

    mr9.MoveNext

    Wend

     

    mr9.Close

    Set mr9 = Nothing

    mc9.Close

    Set mc9 = Nothing

     

    CurrentDb.Execute “DROP TABLE [tret];”

    Sub retmed()

     

    Dim inst9 As String

    Dim ins9 As String

    Dim instr9 As String

    Dim mc9 As New Connection

    Set mc9 = CurrentProject.Connection

    Dim mr9 As New Recordset

    Dim ret1  As Byte

    Dim retmed  As Byte

     

    inst9 = “SELECT Tabla1.num_pedido, Tabla1.Retraso, Count(Tabla1.Retraso) AS CuentaDeRetraso INTO tRet ” _

    & “FROM Tabla1 GROUP BY Tabla1.num_pedido, Tabla1.Retraso HAVING Tabla1.num_pedido>0;”

    CurrentDb.Execute inst9

     

    ins9 = “SELECT tRet.Retraso, Sum(tRet.CuentaDeRetraso) AS sumret ” _

    & “FROM tRet GROUP BY tRet.Retraso;”

     

    mr9.Open ins9, mc9

     

    instr9 = “INSERT INTO Tabla2 (num_pedido,retraso,ret_med) values (” & numped & “,” & ret1 & “,” & retmed & “)”

     

    While mr9.EOF = False

    ret1 = mr9!retraso

    retmed = mr9!sumret / numped

     

    Debug.Print numped & ” – Retraso: ” & ret1 & ” Suma: ” & mr9!sumret & ” – Media: ” & retmed

     

    CurrentDb.Execute instr9

     

    mr9.MoveNext

    Wend

     

    mr9.Close

    Set mr9 = Nothing

    mc9.Close

    Set mc9 = Nothing

     

    CurrentDb.Execute “DROP TABLE [tret];”

    Sub retmed()

     

    Dim inst9 As String

    Dim ins9 As String

    Dim instr9 As String

    Dim mc9 As New Connection

    Set mc9 = CurrentProject.Connection

    Dim mr9 As New Recordset

    Dim ret1  As Byte

    Dim retmed  As Byte

     

    inst9 = “SELECT Tabla1.num_pedido, Tabla1.Retraso, Count(Tabla1.Retraso) AS CuentaDeRetraso INTO tRet ” _

    & “FROM Tabla1 GROUP BY Tabla1.num_pedido, Tabla1.Retraso HAVING Tabla1.num_pedido>0;”

    CurrentDb.Execute inst9

     

    ins9 = “SELECT tRet.Retraso, Sum(tRet.CuentaDeRetraso) AS sumret ” _

    & “FROM tRet GROUP BY tRet.Retraso;”

     

    mr9.Open ins9, mc9

     

    instr9 = “INSERT INTO Tabla2 (num_pedido,retraso,ret_med) values (” & numped & “,” & ret1 & “,” & retmed & “)”

     

    While mr9.EOF = False

    ret1 = mr9!retraso

    retmed = mr9!sumret / numped

     

    Debug.Print numped & ” – Retraso: ” & ret1 & ” Suma: ” & mr9!sumret & ” – Media: ” & retmed

     

    CurrentDb.Execute instr9

     

    mr9.MoveNext

    Wend

     

    mr9.Close

    Set mr9 = Nothing

    mc9.Close

    Set mc9 = Nothing

     

    CurrentDb.Execute “DROP TABLE [tret];”

     

     

    End Sub

     

    Lo dicho, con debug.print aparecen los datos correctos, pero al ejecutar la instrucción “instr9” se traspasa el valor correcto de la variable “Numped”, pero el valor que se traspasa de las variables “ret1” y “retmed” es 0, cuando su valor real es otro.

    ¿alguien podría orientarme porque sucede esto?<

    Agradeciendo de antemano cualquier ayuda que pueda recibir,

    un saludo.

    #5006

    Daniel
    Participante

    Gracias amigos.

    Ya está resuelto. El problema es que la instrucción SQL no esta dentro del ciclo While.

    Un saludo.

Viendo 2 entradas - de la 1 a la 2 (de un total de 2)
  • Debes estar registrado para responder a este debate.