Visual Basic - aparejador

Life is soft - evento anual de software empresarial
 
Vista:

aparejador

Publicado por miguel sanchez lozano (1 intervención) el 31/07/2008 22:05:29
estoy pasando en vb6 las rutinas de base de datos de dao a ado, se supone que es mucho mas flesible, pero me encuentro que el el findfirt de dao es muchisimo mas rapido que el find de ado, cuando se utiliza con actualizaciones de tablas de muchos registros.
?existe alguna instruccion mas rapida en ado ¿
el listado de la rutina es el siguiente en dao:

Set c = ct.OpenRecordset("select * from cuentas order by codigo", dbOpenDynaset)
`mv es un recordset de 5000 registros

mv.MoveFirst
Do While mv.EOF = False

c.MoveFirst
c.FindFirst "codigo = '" + Left(mv(1), 2) + "'"
c.Edit
If mv(5) = "D" Then
c(2) = c(2) + mv(4)
Else
c(3) = c(3) + mv(4)
End If
c.Update

c.FindFirst "codigo = '" + Left(mv(1), 3) + "'"
c.Edit
If mv(5) = "D" Then
c(2) = c(2) + mv(4)
Else
c(3) = c(3) + mv(4)
End If
c.Update

c.FindFirst "codigo = '" + mv(1) + "'"
c.Edit
If mv(5) = "D" Then
c(2) = c(2) + mv(4)
Else
c(3) = c(3) + mv(4)
End If
c.Update
mv.MoveNext
Loop
c.Close
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:aparejador

Publicado por apaheco (11 intervenciones) el 17/11/2008 16:05:21
En ADO no debes trabajara asi. Yo te aconsejaria:

craer una conexion ADO y trabajar con ella.

Dim conexionADO as ADODB.Connection
Dim rs as NEW ADODB.Recordset

La rutina que presentas hazla como

dim sSql as string

sSql = "SELECT * " & _
"FROM CUENTAS " & _
"WHERE CODIGO IN('" & mv(1) & "', '" & mv(1, 3) & "', '" & mv(1, 5 ) & "') " & _
"ORDER BY CODIGO "

set rs=conexionADO.Execute (sSql)

do until rs.EOF()
sSql = "UPDATE CUENTAS " & _
"SET c(2) = c(2) + " & mv(4) & ", " & _
"c(3) = c(3) + " & mv(4) & " " & _
"WHERE CODIGO = '" & rs("CODIGO") & "' "
conexionADO.execute (sSql)
rs.movenext
loop
rs.close
set rs = Nothing
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar