In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Como Grabar un TTimerPicker?

Foro público de Xailer en español
Responder
jrcpoli
Mensajes: 240
Registrado: Mié Oct 25, 2006 8:55 pm

Como Grabar un TTimerPicker?

Mensaje por jrcpoli »

Saludos:
Tengo un formulario con todos los campos asociados a una DataSource y
los TDBEdit asociados a su DataSet, excepto un montón de TTimerPicker que al
no tener esa propiedad no están asociados y por lo tanto cuando navego por
el formulario estos campos de hora no se actualizan como los otros y lo hago
por programación pero el problema que tengo es cuando quiero Grabar o
modificar un registro, algo no hago bien porque no se graban, todos los
demás sí pero los de este tipo no.
Yo hago esto:
::oDataSetComunes:DIA_SUELTA := ::oDia_Suelta:Value
::oDataSetComunes:DIAS_MARCH := ::oDias_March:Value
::oDataSetComunes:H_SUELTA := ::oH_Suelta:cTime
::oDataSetComunes:VEINTE_CIE := ::oVeinte_Cie:Value
::oDataSetComunes:DESIG_LETR := ::oDesig_Letr:Value
::oDataSetComunes:H_PUESTA := ::oH_Puesta:cTime
::oDataSetComunes:H_PARADA := ::oH_Parada:cTime
Claro con su ::Edit() o ::AddNew(), y su ::UpDate para terminar, pero como
veís hay varios campos más que si se graban pero los cTimer nada de nada,
¿Que hago mal?.
Supongo que en la base de datos el campo debe estar definido como "C" ó no.
José Ramón Castro Polinio
José Ramón Castro.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9474
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Como Grabar un TTimerPicker?

Mensaje por ignacio »

José,
Te aconsejo que sustituyas los TTimePicker por TMaskEdit con la máscara
99:99:99 de momento.
No obstante acabo de comprobar que al menos aquí está funcionando
correctamente. Tu única precaución es que debes de asignar el valor al campo
DESPUES del Edit y ANTES del Update.
Un saludo
"José R.Castro" <JRCPOLI@terra.es> escribió en el mensaje
news:434179fb$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Saludos:
>
> Tengo un formulario con todos los campos asociados a una DataSource y
> los TDBEdit asociados a su DataSet, excepto un montón de TTimerPicker que
> al
> no tener esa propiedad no están asociados y por lo tanto cuando navego por
> el formulario estos campos de hora no se actualizan como los otros y lo
> hago
> por programación pero el problema que tengo es cuando quiero Grabar o
> modificar un registro, algo no hago bien porque no se graban, todos los
> demás sí pero los de este tipo no.
>
> Yo hago esto:
>
> ::oDataSetComunes:DIA_SUELTA := ::oDia_Suelta:Value
> ::oDataSetComunes:DIAS_MARCH := ::oDias_March:Value
> ::oDataSetComunes:H_SUELTA := ::oH_Suelta:cTime
> ::oDataSetComunes:VEINTE_CIE := ::oVeinte_Cie:Value
> ::oDataSetComunes:DESIG_LETR := ::oDesig_Letr:Value
> ::oDataSetComunes:H_PUESTA := ::oH_Puesta:cTime
> ::oDataSetComunes:H_PARADA := ::oH_Parada:cTime
>
> Claro con su ::Edit() o ::AddNew(), y su ::UpDate para terminar, pero como
> veís hay varios campos más que si se graban pero los cTimer nada de nada,
> ¿Que hago mal?.
>
> Supongo que en la base de datos el campo debe estar definido como "C" ó
> no.
>
> José Ramón Castro Polinio
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
jrcpoli
Mensajes: 240
Registrado: Mié Oct 25, 2006 8:55 pm

Como Grabar un TTimerPicker?

Mensaje por jrcpoli »

Saludos:
Bueno lo haré así con TDBMaskEdit unque eso obliga a controlar la
entrada de la hora con una Function, cosa que con el otro control no hace
falta.
He puesto dos mesajes y me dice exactamente que estoy editando y
añadiendo, en el control de la hora se muestra, pero la hora no se graba en
la base de datos, en fín es un misterio porque no lo hace, te muestro el
metodo que lo debe hacer y que no lo hace.
METHOD AddNew() CLASS TFormComunes
** Activar Botones
::oOk:lEnabled := .T.
::oCerrar:lEnabled := .T.
*
** Opción de Añadir registros
::oDataSetComunes:AddNew()
*
** Ponemos lAnadir a True porque estamos añadiendo
::lAnadir := ::oDataSetComunes:lOnAppend
*
** Desactivar ToolBar y Menú y Browse
::Desactivar()
RETURN Nil
//---------------------------------------------------------- --------------------
METHOD Edit() CLASS TFormComunes
** Activar Botones
::oOk:lEnabled := .T.
::oCerrar:lEnabled := .T.
*
** Opción de Editar registros
::oDataSetComunes:Edit()
*
** Ponemos lEditar a true porque estamos Editando
::lEditar := ::oDataSetComunes:lOnEdit
*
** Desactivar ToolBar y Menú y Browse
::Desactivar()
RETURN Nil
Ahora su pulsamos en el botón OK
METHOD OKClick( oSender ) CLASS TFormComunes
LOCAL lOk := .F.
LOCAL cNumero AS STRING
LOCAL cAnno AS STRING
LOCAL oDB := ::oDataSetNSuelta
*
** Desactivar los Botones
::DesactBotones()
** Activar ToolBar, Menú, Browse
::Activar()
*
// Si lEditar = True si estamos Editando
// Si lAnadir = True si estamos Añadiendo
IF ::lAnadir
*
MsgInfo("Estoy Añadiendo")
** Grabar datos en Base de datos de Comunes
WITH OBJECT ::oDataSetComunes
:H_SUELTA := ::oH_Suelta:cTime
:VEINTE_CIE := ::oVeinte_Cie:Value
:DESIG_LETR := ::oDesig_Letr:Value
:H_PUESTA := ::oH_Puesta:cTime
:H_PARADA := ::oH_Parada:cTime
END
** Abrir base de datos
WITH OBJECT oDB
:cName := "BASESNSUELTA.DBF"
:lOpen := .T.
IF :lOpen
** Asignar número de suelta
Asignans(oDB, ::oFecha_S:Value, ::oLugar_S:Value,
::oNum_Club:Value, ;
@cNumero, @cAnno)
*
** Datos Comunes para grabar
::oNumero_S:Value := cNumero
::oAnno_S:Value := cAnno
::oDataSetComunes:NUMERO_S := cNumero
::oDataSetComunes:ANNO_S := cAnno
::oDataSetComunes:SUELTAANNO := cNumero + cAnno
** Añadir Campos a la base de datos
:AddNew()
:NUMERO_S := cNumero
:ANNO_S := cAnno
:FECHA_S := ::oFecha_S:Value
:L_SUELTA := ::oL_Suelta:Value
:NUM_CLUB := ::oNum_Club:Value
:Update()
** Cerrar la base de datos
:Close()
ENDIF
END
lOk := ::oDataSetComunes:Update()
::oBrowseComunes:Refresh()
*
ENDIF
IF ::lEditar
*
MsgInfo("Estoy Editando")
** Grabar datos en la base de datos de Comunes
WITH OBJECT ::oDataSetComunes
:H_SUELTA := ::oH_Suelta:cTime
:VEINTE_CIE := ::oVeinte_Cie:Value
:DESIG_LETR := ::oDesig_Letr:Value
:H_PUESTA := ::oH_Puesta:cTime
:H_PARADA := ::oH_Parada:cTime
END
lOk := ::oDataSetComunes:Update()
::oBrowseComunes:RefreshCurrent()
*
ENDIF
** Si el Alta o la modificación se graba
** correctamente lOk := True
IF lOK
MsgInfo( "La grabación se ha realizado correctamente" )
ENDIF
** Poner lAnadir y editar a False
::lAnadir := .F.
::lEditar := .F.
RETURN Nil
José Ramón Castro Polinio
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:434244e6$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> José,
>
> Te aconsejo que sustituyas los TTimePicker por TMaskEdit con la máscara
> 99:99:99 de momento.
>
> No obstante acabo de comprobar que al menos aquí está funcionando
> correctamente. Tu única precaución es que debes de asignar el valor al
> campo
> DESPUES del Edit y ANTES del Update.
>
> Un saludo
>
> "José R.Castro" <JRCPOLI@terra.es> escribió en el mensaje
> news:434179fb$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Saludos:
>>
>> Tengo un formulario con todos los campos asociados a una DataSource y
>> los TDBEdit asociados a su DataSet, excepto un montón de TTimerPicker que
>> al
>> no tener esa propiedad no están asociados y por lo tanto cuando navego
>> por
>> el formulario estos campos de hora no se actualizan como los otros y lo
>> hago
>> por programación pero el problema que tengo es cuando quiero Grabar o
>> modificar un registro, algo no hago bien porque no se graban, todos los
>> demás sí pero los de este tipo no.
>>
>> Yo hago esto:
>>
>> ::oDataSetComunes:DIA_SUELTA := ::oDia_Suelta:Value
>> ::oDataSetComunes:DIAS_MARCH := ::oDias_March:Value
>> ::oDataSetComunes:H_SUELTA := ::oH_Suelta:cTime
>> ::oDataSetComunes:VEINTE_CIE := ::oVeinte_Cie:Value
>> ::oDataSetComunes:DESIG_LETR := ::oDesig_Letr:Value
>> ::oDataSetComunes:H_PUESTA := ::oH_Puesta:cTime
>> ::oDataSetComunes:H_PARADA := ::oH_Parada:cTime
>>
>> Claro con su ::Edit() o ::AddNew(), y su ::UpDate para terminar, pero
>> como
>> veís hay varios campos más que si se graban pero los cTimer nada de nada,
>> ¿Que hago mal?.
>>
>> Supongo que en la base de datos el campo debe estar definido como "C" ó
>> no.
>>
>> José Ramón Castro Polinio
>>
>>
>
>
José Ramón Castro.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9474
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Como Grabar un TTimerPicker?

Mensaje por ignacio »

José,
Tenías tu razón. Había un bug en TTimePicker. La propiedad cTime no
recuperaba el valor del control, sólo funcionaba en asignación. Ya está
arreglado.
Por cierto para la PR5a existirá también un DBTimePicker. De hecho ya está
hecho. ;-)
Un saludo
"José R.Castro" <JRCPOLI@terra.es> escribió en el mensaje
news:43427cbe$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Saludos:
> Bueno lo haré así con TDBMaskEdit unque eso obliga a controlar la
> entrada de la hora con una Function, cosa que con el otro control no hace
> falta.
> He puesto dos mesajes y me dice exactamente que estoy editando y
> añadiendo, en el control de la hora se muestra, pero la hora no se graba
> en
> la base de datos, en fín es un misterio porque no lo hace, te muestro el
> metodo que lo debe hacer y que no lo hace.
>
> METHOD AddNew() CLASS TFormComunes
> ** Activar Botones
> ::oOk:lEnabled := .T.
> ::oCerrar:lEnabled := .T.
> *
> ** Opción de Añadir registros
> ::oDataSetComunes:AddNew()
> *
> ** Ponemos lAnadir a True porque estamos añadiendo
> ::lAnadir := ::oDataSetComunes:lOnAppend
> *
> ** Desactivar ToolBar y Menú y Browse
> ::Desactivar()
>
> RETURN Nil
> //---------------------------------------------------------- --------------------
> METHOD Edit() CLASS TFormComunes
> ** Activar Botones
> ::oOk:lEnabled := .T.
> ::oCerrar:lEnabled := .T.
> *
> ** Opción de Editar registros
> ::oDataSetComunes:Edit()
> *
> ** Ponemos lEditar a true porque estamos Editando
> ::lEditar := ::oDataSetComunes:lOnEdit
> *
> ** Desactivar ToolBar y Menú y Browse
> ::Desactivar()
> RETURN Nil
>
> Ahora su pulsamos en el botón OK
> METHOD OKClick( oSender ) CLASS TFormComunes
> LOCAL lOk := .F.
> LOCAL cNumero AS STRING
> LOCAL cAnno AS STRING
> LOCAL oDB := ::oDataSetNSuelta
> *
> ** Desactivar los Botones
> ::DesactBotones()
> ** Activar ToolBar, Menú, Browse
> ::Activar()
> *
> // Si lEditar = True si estamos Editando
> // Si lAnadir = True si estamos Añadiendo
> IF ::lAnadir
> *
> MsgInfo("Estoy Añadiendo")
> ** Grabar datos en Base de datos de Comunes
> WITH OBJECT ::oDataSetComunes
> :H_SUELTA := ::oH_Suelta:cTime
> :VEINTE_CIE := ::oVeinte_Cie:Value
> :DESIG_LETR := ::oDesig_Letr:Value
> :H_PUESTA := ::oH_Puesta:cTime
> :H_PARADA := ::oH_Parada:cTime
> END
> ** Abrir base de datos
> WITH OBJECT oDB
> :cName := "BASESNSUELTA.DBF"
> :lOpen := .T.
> IF :lOpen
> ** Asignar número de suelta
> Asignans(oDB, ::oFecha_S:Value, ::oLugar_S:Value,
> ::oNum_Club:Value, ;
> @cNumero, @cAnno)
> *
> ** Datos Comunes para grabar
> ::oNumero_S:Value := cNumero
> ::oAnno_S:Value := cAnno
> ::oDataSetComunes:NUMERO_S := cNumero
> ::oDataSetComunes:ANNO_S := cAnno
> ::oDataSetComunes:SUELTAANNO := cNumero + cAnno
> ** Añadir Campos a la base de datos
> :AddNew()
> :NUMERO_S := cNumero
> :ANNO_S := cAnno
> :FECHA_S := ::oFecha_S:Value
> :L_SUELTA := ::oL_Suelta:Value
> :NUM_CLUB := ::oNum_Club:Value
> :Update()
> ** Cerrar la base de datos
> :Close()
> ENDIF
> END
> lOk := ::oDataSetComunes:Update()
> ::oBrowseComunes:Refresh()
> *
> ENDIF
> IF ::lEditar
> *
> MsgInfo("Estoy Editando")
> ** Grabar datos en la base de datos de Comunes
> WITH OBJECT ::oDataSetComunes
> :H_SUELTA := ::oH_Suelta:cTime
> :VEINTE_CIE := ::oVeinte_Cie:Value
> :DESIG_LETR := ::oDesig_Letr:Value
> :H_PUESTA := ::oH_Puesta:cTime
> :H_PARADA := ::oH_Parada:cTime
> END
> lOk := ::oDataSetComunes:Update()
> ::oBrowseComunes:RefreshCurrent()
> *
> ENDIF
> ** Si el Alta o la modificación se graba
> ** correctamente lOk := True
> IF lOK
> MsgInfo( "La grabación se ha realizado correctamente" )
> ENDIF
> ** Poner lAnadir y editar a False
> ::lAnadir := .F.
> ::lEditar := .F.
> RETURN Nil
>
> José Ramón Castro Polinio
>
> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
> news:434244e6$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> José,
>>
>> Te aconsejo que sustituyas los TTimePicker por TMaskEdit con la máscara
>> 99:99:99 de momento.
>>
>> No obstante acabo de comprobar que al menos aquí está funcionando
>> correctamente. Tu única precaución es que debes de asignar el valor al
>> campo
>> DESPUES del Edit y ANTES del Update.
>>
>> Un saludo
>>
>> "José R.Castro" <JRCPOLI@terra.es> escribió en el mensaje
>> news:434179fb$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>> Saludos:
>>>
>>> Tengo un formulario con todos los campos asociados a una DataSource y
>>> los TDBEdit asociados a su DataSet, excepto un montón de TTimerPicker
>>> que
>>> al
>>> no tener esa propiedad no están asociados y por lo tanto cuando navego
>>> por
>>> el formulario estos campos de hora no se actualizan como los otros y lo
>>> hago
>>> por programación pero el problema que tengo es cuando quiero Grabar o
>>> modificar un registro, algo no hago bien porque no se graban, todos los
>>> demás sí pero los de este tipo no.
>>>
>>> Yo hago esto:
>>>
>>> ::oDataSetComunes:DIA_SUELTA := ::oDia_Suelta:Value
>>> ::oDataSetComunes:DIAS_MARCH := ::oDias_March:Value
>>> ::oDataSetComunes:H_SUELTA := ::oH_Suelta:cTime
>>> ::oDataSetComunes:VEINTE_CIE := ::oVeinte_Cie:Value
>>> ::oDataSetComunes:DESIG_LETR := ::oDesig_Letr:Value
>>> ::oDataSetComunes:H_PUESTA := ::oH_Puesta:cTime
>>> ::oDataSetComunes:H_PARADA := ::oH_Parada:cTime
>>>
>>> Claro con su ::Edit() o ::AddNew(), y su ::UpDate para terminar, pero
>>> como
>>> veís hay varios campos más que si se graban pero los cTimer nada de
>>> nada,
>>> ¿Que hago mal?.
>>>
>>> Supongo que en la base de datos el campo debe estar definido como "C" ó
>>> no.
>>>
>>> José Ramón Castro Polinio
>>>
>>>
>>
>>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder