
GRABAR un registro estaba lento
Publicado por victor perez (137 intervenciones) el 07/03/2014 21:37:47
Buenas Tardes,
Hace unos meses consulte por una lentitud que había al grabar un registro en una de mis tablas en MYSQL.
Bueno, hoy encontré la posible causa de lo lento que era hacer el proceso, aun cuando lei y lei el código y no daba con la solución.
El código QUE PROVOCA EL CONFLICTO es el siguiente:
Ahora, al eliminar el código todo funciona de maravillas, pero si en un mismo momento estamos grabando dos registros (uno en cada computadora) , tenemos la posibilidad de que se GRABE con el mismo Numero de Expediente...
Claro que la posibilidad es un tanto remota porque bastan segundos para que se grabe el proceso...
De todas formas, no entiendo por que esta rutina ponía tan lento el sistema.
Cualquier ayuda, gracias
Victor
Hace unos meses consulte por una lentitud que había al grabar un registro en una de mis tablas en MYSQL.
Bueno, hoy encontré la posible causa de lo lento que era hacer el proceso, aun cuando lei y lei el código y no daba con la solución.
El código QUE PROVOCA EL CONFLICTO es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
If _Nuevo **SI EL REGISTRO ES NUEVO
_existe=.T.
_Doc= alltrim(STR(Val(wNum) + 1)) && Toma el Valor del Expediente que se está haciendo
Do while _existe=.t. && LA SIGUIENTE RUTINA BUSCA SI EL # DE EXPEDIENTE EXISTE...
THISFORM.CONECTA
SQLEXEC(LNHANDLE,"SELECT * FROM CLINICA.PATIENT WHERE NUMERO=&_DOC","REXP")
SQLCONNECT(LNHANDLE)
IF RECCOUNT() <> 0 && SI EL # DE EXPEDIENTE EXISTE, AGREGA +1 AL VALOR DE _DOC
_Doc= alltrim(STR(Val(_Doc) + 1))
ELSE
_existe=.f. && SI EL # NO EXISTE, HACE LA VARIABLE FALSA Y SALE DE LA RUTINA.
EndIf
Loop
EndDo
THISFORM.CONECTA
SQLEXEC(LNHANDLE,"UPDATE CLINICA.EXPEDIENTE SET NUMERO=&_DOC ")
SQLCONNECT(LNHANDLE)
ENDIF
Ahora, al eliminar el código todo funciona de maravillas, pero si en un mismo momento estamos grabando dos registros (uno en cada computadora) , tenemos la posibilidad de que se GRABE con el mismo Numero de Expediente...
Claro que la posibilidad es un tanto remota porque bastan segundos para que se grabe el proceso...
De todas formas, no entiendo por que esta rutina ponía tan lento el sistema.
Cualquier ayuda, gracias
Victor
Valora esta pregunta


0