Carina

Revisa si tenes indices para:

slot
id_estacion

La otra prueba, que cursor estas usando para la conexion? usuario o server?,
proba cambiarlo, eso te puee cambiar la vida.

Daniel Calvin

El 4 de mayo de 2009 15:15, Carina V. Barca <[email protected]>escribió:

>  Gracias Daniel por contestar, te cuento que puse break points y se demora
> una eternidad en hacer algo, se queda como esperando algo, y despues lo hace
> de una en un ratito (los select y los insert), por eso no tengo idea que
> puede ser, le puse break points a todo, incluso hice un trace para tratar de
> descubrir que pasa y no pude detectar que es.Voy a tener en cuenta todo lo
> que me aconsejas, si surge algo pregunto.Muchas gracias
> Saludos
>
> Carina
>
> ------------------------------
> Date: Mon, 4 May 2009 14:29:56 -0300
> Subject: [vbusers] Demora guardar datos
> From: [email protected]
> To: [email protected]
>
>
> Hola Carina
>
> La cuestion es saber donde esta la demora..
>
> Te fijate cuanto tarda cada select?, los predicados se benefician de algun
> indice o pK?
>
> Pondría un break point antes de cada select y le daria F8 para que lo
> ejecute, aver si la demora esta alli.
> Por otra parte te doy un par de consejos
>
>
>    1. Deberias hacer la actualización entro de una transaction. ( si te da
>    error a la mitad te queda actualizado solo una parte )
>    2. Usaría un ebug.print now entre cada select y execute, para saber
>    cuanto tardan
>    3. Trataría de separar la rutina en un par de metodos, como para poder
>    seguir mejor el código, asi es muy confuso.
>
> Por ejemplo esto es candidato a ser una funcion...
>           rsBd.Open "select id_sensor, ID_tipo_sensor, slot from sensores
> where slot=" & i & " and id_estacion =" & estacion & " order by slot asc",
> cnl, adoenkeyset, adLockOptimistic
>           id_tipo_sensor = rsBd.Fields(1)
>           id_sensor = rsBd.Fields(0)
>           rsBd.Close
> Daniel Calvin
>
>
> 2009/5/4 Carina V. Barca <[email protected]>
>
>  Hola a todos: tengo una aplicacion hecha en visual basic 6 que a la hora
> de guardar datos se demora 10 minutos, el codigo que utilizo es el
> siguiente:
>
> Private Sub guardaBaseDatos(estacion As Integer)
> Dim rsBd As ADODB.Recordset
> Set rsBd = New Recordset
> Dim rsDatos As ADODB.Recordset
> Set rsDatos = New Recordset
> rsDatos.Open "Select * from datos", cnl, adoenkeyset, adLockOptimistic
>
> filas = 2
> i = 1
> cant = 0
> For j = 1 To 12
>         Select Case estacion
>             Case 1: slotActual = msf_cadena1.TextMatrix(1, 3 + i)
>             Case 2: slotActual = msf_cadena2.TextMatrix(1, 3 + i)
>             Case 3: slotActual = msf_cadena3.TextMatrix(1, 3 + i)
>             Case 4: slotActual = msf_cadena4.TextMatrix(1, 3 + i)
>             Case 5: slotActual = msf_cadena5.TextMatrix(1, 3 + i)
>             Case 6: slotActual = msf_cadena6.TextMatrix(1, 3 + i)
>             Case 7: slotActual = msf_cadena7.TextMatrix(1, 3 + i)
>             Case 8: slotActual = msf_cadena8.TextMatrix(1, 3 + i)
>             Case 9: slotActual = msf_cadena9.TextMatrix(1, 3 + i)
>            ' Case 10: slotActual = msf_cadena10.TextMatrix(1, 3 + i)
>
>         End Select
>         If slotActual = "N" Or slotActual = "CB" Then
>           filas = filas + 1
>           i = i + 1
>         Else
>           'rsDatos.AddNew
>           Select Case estacion
>             Case 1: id_estacion = msf_cadena1.TextMatrix(1, 3)
>             Case 2: id_estacion = msf_cadena2.TextMatrix(1, 3)
>             Case 3: id_estacion = msf_cadena3.TextMatrix(1, 3)
>             Case 4: id_estacion = msf_cadena4.TextMatrix(1, 3)
>             Case 5: id_estacion = msf_cadena5.TextMatrix(1, 3)
>             Case 6: id_estacion = msf_cadena6.TextMatrix(1, 3)
>             Case 7: id_estacion = msf_cadena7.TextMatrix(1, 3)
>             Case 8: id_estacion = msf_cadena8.TextMatrix(1, 3)
>             Case 9: id_estacion = msf_cadena9.TextMatrix(1, 3)
>            ' Case 10: id_estacion = msf_cadena10.TextMatrix(1, 3)
>
>           End Select
>           On Error Resume Next
>           rsBd.Open "select id_sensor, ID_tipo_sensor, slot from sensores
> where slot=" & i & " and id_estacion =" & estacion & " order by slot asc",
> cnl, adoenkeyset, adLockOptimistic
>           id_tipo_sensor = rsBd.Fields(1)
>           id_sensor = rsBd.Fields(0)
>           rsBd.Close
>           Select Case estacion
>             Case 1: v_valor = msf_cadena1.TextMatrix(1, 3 + i)
>             Case 2: v_valor = msf_cadena2.TextMatrix(1, 3 + i)
>             Case 3: v_valor = msf_cadena3.TextMatrix(1, 3 + i)
>             Case 4: v_valor = msf_cadena4.TextMatrix(1, 3 + i)
>             Case 5: v_valor = msf_cadena5.TextMatrix(1, 3 + i)
>             Case 6: v_valor = msf_cadena6.TextMatrix(1, 3 + i)
>             Case 7: v_valor = msf_cadena7.TextMatrix(1, 3 + i)
>             Case 8: v_valor = msf_cadena8.TextMatrix(1, 3 + i)
>             Case 9: v_valor = msf_cadena9.TextMatrix(1, 3 + i)
>             'Case 10: v_valor = msf_cadena10.TextMatrix(1, 3 + i)
>           End Select
>           If (v_valor) = "" Then
>               valor = 0
>           Else
>               valor = CDbl(v_valor)
>           End If
>           Select Case estacion
>             Case 1: v_fecha = msf_cadena1.TextMatrix(1, 1)
>             Case 2: v_fecha = msf_cadena2.TextMatrix(1, 1)
>             Case 3: v_fecha = msf_cadena3.TextMatrix(1, 1)
>             Case 4: v_fecha = msf_cadena4.TextMatrix(1, 1)
>             Case 5: v_fecha = msf_cadena5.TextMatrix(1, 1)
>             Case 6: v_fecha = msf_cadena6.TextMatrix(1, 1)
>             Case 7: v_fecha = msf_cadena7.TextMatrix(1, 1)
>             Case 8: v_fecha = msf_cadena8.TextMatrix(1, 1)
>             Case 9: v_fecha = msf_cadena9.TextMatrix(1, 1)
>             'Case 10: v_fecha = msf_cadena10.TextMatrix(1, 1)
>           End Select
>           If v_fecha = "" Then
>               fecha = "01/01/1900"
>           Else
>               fecha = v_fecha
>            End If
>           Select Case estacion
>             Case 1: v_hora = msf_cadena1.TextMatrix(1, 2)
>             Case 2: v_hora = msf_cadena2.TextMatrix(1, 2)
>             Case 3: v_hora = msf_cadena3.TextMatrix(1, 2)
>             Case 4: v_hora = msf_cadena4.TextMatrix(1, 2)
>             Case 5: v_hora = msf_cadena5.TextMatrix(1, 2)
>             Case 6: v_hora = msf_cadena6.TextMatrix(1, 2)
>             Case 7: v_hora = msf_cadena7.TextMatrix(1, 2)
>             Case 8: v_hora = msf_cadena8.TextMatrix(1, 2)
>             Case 9: v_hora = msf_cadena9.TextMatrix(1, 2)
>             'Case 10: v_hora = msf_cadena10.TextMatrix(1, 2)
>           End Select
>
>           If v_hora = "" Then
>               hora = "12:00"
>           Else
>               hora = v_hora
>           End If
>
>           v_sql = "INSERT INTO [Datos]([ID_Estacion], [ID_Tipo_Sensor],
> [Valor], [Fecha], [Hora], dato) VALUES (" & estacion & ", " & id_tipo_sensor
> & "," & Replace(valor, ",", ".") & ", '" & fecha & "', '" &
> FormatDateTime(hora, 4) & "', 0)"
>           v_sqlTMP = "INSERT INTO [Datos_tmp]([ID_Estacion], id_sensor,
> [id_Tipo_Sensor], [Valor], [Fecha], [Hora], dato) VALUES (" & estacion & ",
> " & id_sensor & ", " & id_tipo_sensor & "," & Replace(valor, ",", ".") & ",
> '" & fecha & "', '" & FormatDateTime(hora, 4) & "', 0)"
>           'MsgBox v_sql
>
>
>
>           cnl.Execute (v_sql)
>           cnl.Execute (v_sqlTMP)
>           filas = filas + 1
>           i = i + 1
>           cant = cant + 1
>         End If
> Next j
> End Sub
>
>
> Alguien tiene idea que puede ser? donde puedo buscar?
> Muchas gracias
>
> Saludos
>
> Carina
>
> ------------------------------
> Más rápido, fácil, seguro y con lo que más te gusta de Windows Live, así es
> el nuevo Internet Explorer 8 ¡Descárgatelo!
> <http://ie8.msn.com/microsoft/internet-explorer-8/es-es/ie8.aspx>
>
>
>
>
> --
> Daniel A. Calvin
> Cooperator Team Member
> http://www.cooperator.com.ar
> Microsoft Certified Professional
>
> ------------------------------
> El nuevo Windows Live tiene mucho que ofrecerte. Descúbrelo en estos
> vídeos <http://www.windowslive.es>
>



-- 
Daniel A. Calvin
Cooperator Team Member
http://www.cooperator.com.ar
Microsoft Certified Professional

Responder a