Lotus Approach - para MANOLO

 
Vista:

para MANOLO

Publicado por fenix (97 intervenciones) el 27/04/2009 16:23:21
Saludos MANOLO.

Te comento lo que me a estado ocurriento.
De las dos recomendaciones, ambas las he probado. Con el metodo del formulario me funciono mientras lo tenia en desarrollo, pero cuando lo pose a produccion ya con multiples concurrencias, algunos usuarios iniciaron registros y no los terminaban durante una hora, (lo que significa que tomaban un numero pero no graban en el momento), otros usuarios tomaban el mismo numero, con el desenlace que se duplicaban los numeros. Esto me a obligado a generar el contador al momento de grabar el nuevo registro esto ya no me permite usar el metodo del formulario porque debe grabar primero..

Usando la otra tecnica. Te muestro el codigo usando SQL.

Este codigo la primera ves que lo corro me encuentra el numero mayor, tal como lo necesito. Lo que no entiendo es que continuo creando nuevos registros pero no los toma en cuenta, muestra el contador de la primera corrida.

Ej.

Numero Mayor antes de correr el SQL.
Año 2009
Numero mayor 149

Primera corrida - Encuentra el 150, se graba en el registro 1001
Segunda corrida - Encuentra el 150, se graba en el registro 1002
Tercera corrida - Encuentra el 150, se graba en el registro 1003
Cuarta corrida - Encuentra el 150, se graba en el registro 1004
Quinta corrida - Encuentra el 150, se graba en el registro 1005
Sexta corrida - Encuentra el 150, se graba en el registro 1006...

Algunas interrogantes que he tenido
--------------------------------------------------
- ¿No se corre el SQL realmente?
- ¿No bota la connexion y siempre busca en la misma instancia?
- ¿No graba en la DBF, inmediatamente?
- ¿Que puede estar ocurriendo?

Sub CreaNewGestion
Dim Path As String
Dim File As String
'------------------
CD = Chr(34) '--------- Comillas dobles para formar sentencias SQL
Path = CurrentDocument.Path '------ Via al documento
File = "LLTC01.DBF" '------ Nombre de archivo
mAnnio_Actual = Year(Today())
'----------------------- Inicializar variables
Set CON = New Connection
Set QRY = New Query
Set RST = New ResultSet
CON.ConnectTo("dBASE IV")
Set QRY.Connection = CON
QRY.TableName = Path + File
Set RST.Query = QRY

Table = Path + File

'------------ Ahora formamos la sentencia SQL. Sólo funciona la sentencia SELECT
'------------ no proebes con ninguna otra sentencia SQL, sólo va la SELECT.
QRY.SQL = "SELECT * FROM " & CD & Path & File & CD & " WHERE PERIODO ='" & mAnnio_Actual & "' ORDER BY cod_lla"
Set RST.Query = QRY
RST.Execute
RST.LastRow
' Messagebox "El último número es:" & RST.GetValue("cod_lla")
NewGestion = RST.GetValue("cod_lla")
NewGestion=Right(Str( Val(NewGestion) + 100001),5)
' Messagebox "El último número es:" & NewGestion
CurrentView.Body.COD_LLA.ReadOnly = False
'CurrentView.Body.COD_LLA.Text=Right(Str( Val(NewGestion) + 100001),5)
CurrentView.Body.COD_LLA.Text = NewGestion
' Messagebox "El último número es:" & CurrentView.Body.COD_LLA.Text
CurrentView.Body.COD_LLA.ReadOnly = True
'=================== fin de la secuencia
End Sub
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:para MANOLO

Publicado por Manolo (140 intervenciones) el 28/04/2009 09:49:47
Hola Fenix:
Por la información que me indicas y lo que observo mirando el código, lo que te falta es actualizar el registro en el momento que colocas el número en el campo del formulario:

CurrentView.Body.COD_LLA.Text = NewGestion
CurrentView.Body.COD_LLA.ReadOnly = True

Una vez hecho ésto, si el operador no teclea "intro" o simplemente deja el ordenador sin hacer nada, el registro no se actualiza. Es lo que te falta. Tienes que actualizar inmediatamente después de colocar el número siguiente al último en el campo. En la opción Registro sería: Actualizar datos. En el script, la sentencia equivalente es:

CurrentWindow.Refresh

Tendrás que poner:

CurrentView.Body.COD_LLA.Text = NewGestion
CurrentView.Body.COD_LLA.ReadOnly = True
CurrentWindow.Refresh

Así, actualiza la base de datos. A la siguiente "RST.Execute", la BD estará actualizada con el último registro generado.

Si ésto no soluciona tus problemas, lo analizamos más a fondo.

Un saludo.

Manolo
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

RE:para MANOLO

Publicado por fenix (97 intervenciones) el 04/05/2009 15:56:55
Funciono. Gracias
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