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.

TWebDataSource

Foro público de Xailer en español
Responder
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

TWebDataSource

Mensaje por zeasoftware »

He logrado compilar en X 3.2, estoy probando el TWebDataSource, pero veo
unas configuraciones que no entiendo de donde se toman, hay algún lugar
donde se explique como hay que configurarlo del lado de donde va la base de
datos? y el ejemplo del archivo PHP que menciona debe llevar?
Tengo la versión enterprise pero me quede en la 2.2, y estoy por empezar a
migrar.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
https://www.facebook.com/zeasoftware
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

TWebDataSource

Mensaje por zeasoftware »

Bueno, no se amontonen, y gracias, ya he logrado hacer funcionar el proceso
en la DEMO 3.2, solo que no hay mucho de donde tomar ejemplos, y sacar mas
potencial de esta Clase, estoy haciendo pruebas usando cosas que veo en el
foro, pero como son solo consultas, están escuetas los códigos.
Alguien que tenga ejemplos que no comprometan su proyecto y que quiera
compartir con los que no somos tan truchos en el manejo de esta clase?
Gracias de antemano.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
https://www.facebook.com/zeasoftware
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
escribió en el mensaje de noticias:53881a15$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
He logrado compilar en X 3.2, estoy probando el TWebDataSource, pero veo
unas configuraciones que no entiendo de donde se toman, hay algún lugar
donde se explique como hay que configurarlo del lado de donde va la base de
datos? y el ejemplo del archivo PHP que menciona debe llevar?
Tengo la versión enterprise pero me quede en la 2.2, y estoy por empezar a
migrar.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
https://www.facebook.com/zeasoftware
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
Avatar de Usuario
Carlos Ortiz
Mensajes: 872
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

TWebDataSource

Mensaje por Carlos Ortiz »

Si tuviera Ramón te darí­a una mano pero no he hecho nada con eso aún.
Saludos
El 02/06/2014 20:36, zeasoftware@hotmail.com escribió:
> Bueno, no se amontonen, y gracias, ya he logrado hacer funcionar el
> proceso en la DEMO 3.2, solo que no hay mucho de donde tomar ejemplos,
> y sacar mas potencial de esta Clase, estoy haciendo pruebas usando
> cosas que veo en el foro, pero como son solo consultas, están escuetas
> los códigos.
>
> Alguien que tenga ejemplos que no comprometan su proyecto y que quiera
> compartir con los que no somos tan truchos en el manejo de esta clase?
>
> Gracias de antemano.
>
> Ramón Zea
>
> Móvil.: 993-231.62.29
> Tel./Fax: 993-353-46-73
> www.zeasoftware.com.mx
> soporte@zeasoftware.com.mx
> zeasoftware@hotmail.com
> https://www.facebook.com/zeasoftware
> Proveedor Autorizado:
> REACHCORE
> FACTURAXION
> SERVISIM
> escribió en el mensaje de noticias:53881a15$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>
> He logrado compilar en X 3.2, estoy probando el TWebDataSource, pero veo
> unas configuraciones que no entiendo de donde se toman, hay algún lugar
> donde se explique como hay que configurarlo del lado de donde va la
> base de
> datos? y el ejemplo del archivo PHP que menciona debe llevar?
>
> Tengo la versión enterprise pero me quede en la 2.2, y estoy por
> empezar a
> migrar.
>
> Saludos.
> Ramón Zea
>
> Móvil.: 993-231.62.29
> Tel./Fax: 993-353-46-73
> www.zeasoftware.com.mx
> soporte@zeasoftware.com.mx
> zeasoftware@hotmail.com
> https://www.facebook.com/zeasoftware
> Proveedor Autorizado:
> REACHCORE
> FACTURAXION
> SERVISIM
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

TWebDataSource

Mensaje por zeasoftware »

Gracias, al menos obtuve una respuesta.
Serí­a bueno tener un ejemplo del XTeam mostrando el potencial de la Clase.
Por ahora lo que quiero es buscar un registro, para actualizar un dato.
Por ahora solo hice un vaciado de datos de una DBF hacia una DB en mi
pagina.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
https://www.facebook.com/zeasoftware
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"Carlos Ortiz" escribió en el mensaje de
noticias:538d2445$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Si tuviera Ramón te darí­a una mano pero no he hecho nada con eso aún.
Saludos
El 02/06/2014 20:36, zeasoftware@hotmail.com escribió:
> Bueno, no se amontonen, y gracias, ya he logrado hacer funcionar el
> proceso en la DEMO 3.2, solo que no hay mucho de donde tomar ejemplos, y
> sacar mas potencial de esta Clase, estoy haciendo pruebas usando cosas que
> veo en el foro, pero como son solo consultas, están escuetas los códigos.
>
> Alguien que tenga ejemplos que no comprometan su proyecto y que quiera
> compartir con los que no somos tan truchos en el manejo de esta clase?
>
> Gracias de antemano.
>
> Ramón Zea
>
> Móvil.: 993-231.62.29
> Tel./Fax: 993-353-46-73
> www.zeasoftware.com.mx
> soporte@zeasoftware.com.mx
> zeasoftware@hotmail.com
> https://www.facebook.com/zeasoftware
> Proveedor Autorizado:
> REACHCORE
> FACTURAXION
> SERVISIM
> escribió en el mensaje de noticias:53881a15$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>
> He logrado compilar en X 3.2, estoy probando el TWebDataSource, pero veo
> unas configuraciones que no entiendo de donde se toman, hay algún lugar
> donde se explique como hay que configurarlo del lado de donde va la base
> de
> datos? y el ejemplo del archivo PHP que menciona debe llevar?
>
> Tengo la versión enterprise pero me quede en la 2.2, y estoy por empezar a
> migrar.
>
> Saludos.
> Ramón Zea
>
> Móvil.: 993-231.62.29
> Tel./Fax: 993-353-46-73
> www.zeasoftware.com.mx
> soporte@zeasoftware.com.mx
> zeasoftware@hotmail.com
> https://www.facebook.com/zeasoftware
> Proveedor Autorizado:
> REACHCORE
> FACTURAXION
> SERVISIM
PEDRO DE LEON RODAS[3]
Mensajes: 266
Registrado: Mar Oct 28, 2008 4:41 am

TWebDataSource

Mensaje por PEDRO DE LEON RODAS[3] »

Que tal Ramón Zea, saludos.
Yo empecé a trabajar con esa clase, logre conectarme a mi base de datos,
inserte e incluso hago consultas, edito registros.
Pero, desafortunadamente me quede estancado al querer controlar los
bloqueos.
En cuanto tenga otro tiempo seguiré buscando y estoy seguro que le voy a
sacar todo lo bueno de esta clase.
Te pongo unos ejemplos de como logre conectarme con la bd en el hosting.
Este codigo lo puse en mi prg principal
AppData:AddData("base",TWebDataSource():Create())
WITH OBJECT AppData:Base //Defino propiedades del DataSource
:cConnect := "www.midominio.com" /// Si tu dominio es por ejemplo
www.programas.com
:cCryptKey :="x1x2a3" //// Esto es lo que pones en el archivo
xa_wdsMySql.php que subistes a tu hosting
:cDatabase := "midomini_mi_bd" /// nombre de la base de datos, tienes
que escribir primero los ocho digitos de tu dominio seguido de un guin bajo
y el nombre de la base de datos
:cPhpModule:= "xa_wdsMySql.php" //// En esta parte tienes que
especificar el nombre del archivo php
:nDBType:= dtMYSQL
:nPort=80
:nTimeOut=30
:lDisplayErrors=.T.
:lAbortOnErrors := .T.
IF !:Connect()
MSGSTOP('NO SE PUEDE CONECTAR AL SERVIDOR')
QUIT
else
ENDIF
END WITH
Y si quieres hacer consultas puedes usar la forma de los datasets TsqlQuery.
Eejemplo:
::Mi_dataset:oDataSource=AppData:Base //// Esto es lo que esta arriba
AppData:AddData("base",TWebDataSource():Create())
::Mi_dataset:cSelect="select * from mi_tabla Where
mi_campo='"+Variable_buscar+"' "
::Mi_dataset:Open()
::Mi_dataset:Edit() //// De esta forma puedes editar un registro
::Mi_dataset:mi_campo=mi_variable
::Mi_dataset:Update()
O si quieres insertar un registro a la tabla puedes hacer lo siguiente:
::Mi_dataset:cSelect="select * from mi_tabla Where 0 "
::Mi_dataset:Open()
::Mi_dataset:AddNew() //// De esta forma puedes editar un registro
::Mi_dataset:mi_campo=mi_variable
::Mi_dataset:Update()
No soy bueno para explicar por medio de letras, espero te sirva de algo.
Saludos
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

TWebDataSource

Mensaje por zeasoftware »

Gracias, actualmente hago esto, pues de inicio quiero entender bien el funcionamiento, para empezar a implementarlo en una sección de mi sistema, que un cliente me ha pedido.
Quiero hacer algo parecido al manejo de DBF:
Si Existe_el_dato
actualizo_un_campo
Sino
agrego_datos
FinSi
//Supongo tendrí­a que usar el MODIFY, pero no me darí­a el mismo efecto que busco arriba.
::oSQLTable1:Open()
With Object ::oDBFClientes
:Open()
:GoTop()
While !:Eof()
::oWebDataSource1:Execute("Select * From timbres Where RFC = '" + :RFC + "'" )
lExiste := ( ::oWebDataSource1:nAffectedRows > 0 )
//aunque regresa que el dato existe, pero siempre está en el renglón 1
IF ( lExiste ) //::oSQLTable1:Seek(:RFC) )
//funciona bien, pero siempre está en el registro 1
::oSQLTable1:FastEdit()
::oSQLTable1:accesos += 1
::oSQLTable1:FastUpdate()
Else
//aaquí­ anexo los datos nuevos, y funciona perfecto.
::oSQLTable1:FastAddNew()
::oSQLTable1:RFC := :RFC
::oSQLTable1:Nombre := :Nombre
::oSQLTable1:FastUpdate()
End
:Skip(1)
End
:Close()
End With
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
https://www.facebook.com/zeasoftware
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"PEDRO DE LEON RODAS" escribió en el mensaje de noticias:538d4ca3$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Que tal Ramón Zea, saludos.
Yo empecé a trabajar con esa clase, logre conectarme a mi base de datos,
inserte e incluso hago consultas, edito registros.
Pero, desafortunadamente me quede estancado al querer controlar los
bloqueos.
En cuanto tenga otro tiempo seguiré buscando y estoy seguro que le voy a
sacar todo lo bueno de esta clase.
Te pongo unos ejemplos de como logre conectarme con la bd en el hosting.
Este codigo lo puse en mi prg principal
AppData:AddData("base",TWebDataSource():Create())
WITH OBJECT AppData:Base //Defino propiedades del DataSource
:cConnect := "www.midominio.com" /// Si tu dominio es por ejemplo
www.programas.com
:cCryptKey :="x1x2a3" //// Esto es lo que pones en el archivo
xa_wdsMySql.php que subistes a tu hosting
:cDatabase := "midomini_mi_bd" /// nombre de la base de datos, tienes
que escribir primero los ocho digitos de tu dominio seguido de un guin bajo
y el nombre de la base de datos
:cPhpModule:= "xa_wdsMySql.php" //// En esta parte tienes que
especificar el nombre del archivo php
:nDBType:= dtMYSQL
:nPort=80
:nTimeOut=30
:lDisplayErrors=.T.
:lAbortOnErrors := .T.
IF !:Connect()
MSGSTOP('NO SE PUEDE CONECTAR AL SERVIDOR')
QUIT
else
ENDIF
END WITH
Y si quieres hacer consultas puedes usar la forma de los datasets TsqlQuery.
Eejemplo:
::Mi_dataset:oDataSource=AppData:Base //// Esto es lo que esta arriba
AppData:AddData("base",TWebDataSource():Create())
::Mi_dataset:cSelect="select * from mi_tabla Where
mi_campo='"+Variable_buscar+"' "
::Mi_dataset:Open()
::Mi_dataset:Edit() //// De esta forma puedes editar un registro
::Mi_dataset:mi_campo=mi_variable
::Mi_dataset:Update()
O si quieres insertar un registro a la tabla puedes hacer lo siguiente:
::Mi_dataset:cSelect="select * from mi_tabla Where 0 "
::Mi_dataset:Open()
::Mi_dataset:AddNew() //// De esta forma puedes editar un registro
::Mi_dataset:mi_campo=mi_variable
::Mi_dataset:Update()
No soy bueno para explicar por medio de letras, espero te sirva de algo.
Saludos
--
Gabo
Mensajes: 104
Registrado: Mié Oct 27, 2010 1:36 am

TWebDataSource

Mensaje por Gabo »

Ramon
1.- Crear el DataSource ( Yo lo tengo desde el IDE ) y despues hago esto.

AppData:oMySqlDSMain:= ::oWebDS
WITH OBJECT AppData:oMySqlDSMain
:lConnected:= .T.
END WITH
IF AppData:oMySqlDSMain:IsError()
MsgStop( "NO ES POSIBLE REALIZAR LA CONEXION CON EL SERVIDOR DE DATOS (MySQL)" + Hb_OsNewLine() + ;
"POR FAVOR, REVISE SUS CONEXIONES DE RED...", "SoftAdmin" )
Application:Terminate()
RETURN .F.
ENDIF
IF ! AppData:oMySqlDSMain:Connect()
MsgStop( "NO ES POSIBLE REALIZAR LA CONEXION CON EL SERVIDOR DE DATOS (MySQL)" + Hb_OsNewLine() + ;
"POR FAVOR, REVISE SUS CONEXIONES DE RED...", "SoftAdmin" )
::Close()
Application:Terminate()
RETURN .F.
ENDIF

2.- Para abrir una tabla,Antes de realizar una consulta a cualquier tabla se debe de verificar la conexion del DS

IF ! AppData:oMySqlDSMain:Connect()
MsgStop( "NO ES POSIBLE REALIZAR LA CONEXION CON EL SERVIDOR DE DATOS (MySQL)", "SoftAdmin" )
RETURN .F.
ENDIF
::oSQLTurnos:= AppData:oMySqlDSMain:Query( "SELECT * FROM cajas WHERE id_empresa='" + AppData:cIDCompany + "'" )
WITH OBJECT ::oSQLTurnos
:lOpen:= .T.
IF !:lOpen
MsgStop( "ERROR: No es posible abrir archivo de cajas", "Error de conexion.." )
RETURN NIL
ENDIF
END WITH
::oSQLTurnos:GoTop()
::oSQLTerminal:= AppData:oMySqlDSMain:Query( "SELECT * FROM catcajas WHERE id_empresa='" + AppData:cIDCompany + ;
"' AND id_caja='"+AllTrim(::oNEEstacion:Value)+"'" )
WITH OBJECT ::oSQLTerminal
IF !:lOpen
:lOpen:= .T.
IF !:lOpen
MsgStop( "ERROR: No es posible abrir archivo de cajas", "Error de conexion.." )
RETURN NIL
ENDIF
ENDIF
END WITH
IF ::oSQLTerminal:RecCount()==0
::oSQLTerminal:AddNew()
::oSQLTerminal:id_empresa:= AppData:cIDCompany
::oSQLTerminal:id_caja := ::oNEEstacion:Value
::oSQLTerminal:Update()
ENDIF
::oSQLTurnos:AddNew()
::oSQLTurnos:id_empresa := AppData:cIDCompany
::oSQLTurnos:id_caja := ::oNEEstacion:Value
::oSQLTurnos:fecha_venta := ::oFechaVenta:value
::oSQLTurnos:id_turno := ::oNumTurno:Value
::oSQLTurnos:fondo_fijo := ::oFondoFijo:Value
::oSQLTurnos:time_open := Time()
::oSQLTurnos:Update()

En la seccion de descargas hay ejemplos casi completos de amb usando mysql. y te pueden orientar bastante. despues solo cambias el datasource.
Saludos
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

TWebDataSource

Mensaje por zeasoftware »

Gracias, tomaré en cuenta tus aportaciones.
Lo que aún no entiendo es como obtener el registro que busco, al menos, con
los DBF, al hacer un seek, me quedaba en la posición del dato a buscar y
solo era cambiar los datos, pero, con SQL, es otro tipo de motor, hice un
pequeño método que emula el Seek para TSQLTable, y me funciona, pero no
queda el cursor en el registro que busco.
Mas que todo es lógica, pues vengo de años trabajando con DBF.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
https://www.facebook.com/zeasoftware
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"Gabriel Ornelas" escribió en el mensaje de
noticias:538d66c8$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Ramon
1.- Crear el DataSource ( Yo lo tengo desde el IDE ) y
despues hago esto.
AppData:oMySqlDSMain:= ::oWebDS
WITH OBJECT AppData:oMySqlDSMain
:lConnected:= .T.
END WITH
IF AppData:oMySqlDSMain:IsError()
MsgStop( "NO ES POSIBLE REALIZAR LA CONEXION CON EL
SERVIDOR DE DATOS (MySQL)" + Hb_OsNewLine() + ;
"POR FAVOR, REVISE SUS CONEXIONES DE RED...",
"SoftAdmin" )
Application:Terminate()
RETURN .F.
ENDIF
IF ! AppData:oMySqlDSMain:Connect()
MsgStop( "NO ES POSIBLE REALIZAR LA CONEXION CON EL
SERVIDOR DE DATOS (MySQL)" + Hb_OsNewLine() + ;
"POR FAVOR, REVISE SUS CONEXIONES DE RED...",
"SoftAdmin" )
::Close()
Application:Terminate()
RETURN .F.
ENDIF
2.- Para abrir una tabla,Antes de realizar una consulta a
cualquier tabla se debe de verificar la conexion del DS
IF ! AppData:oMySqlDSMain:Connect()
MsgStop( "NO ES POSIBLE REALIZAR LA CONEXION CON EL
SERVIDOR DE DATOS (MySQL)", "SoftAdmin" )
RETURN .F.
ENDIF
::oSQLTurnos:= AppData:oMySqlDSMain:Query( "SELECT * FROM
cajas WHERE id_empresa='" + AppData:cIDCompany + "'" )
WITH OBJECT ::oSQLTurnos
:lOpen:= .T.
IF !:lOpen
MsgStop( "ERROR: No es posible abrir archivo de
cajas", "Error de conexion.." )
RETURN NIL
ENDIF
END WITH
::oSQLTurnos:GoTop()
::oSQLTerminal:= AppData:oMySqlDSMain:Query( "SELECT
* FROM catcajas WHERE id_empresa='" + AppData:cIDCompany +
;
"' AND
id_caja='"+AllTrim(::oNEEstacion:Value)+"'" )
WITH OBJECT ::oSQLTerminal
IF !:lOpen
:lOpen:= .T.
IF !:lOpen
MsgStop( "ERROR: No es posible abrir
archivo de cajas", "Error de conexion.." )
RETURN NIL
ENDIF
ENDIF
END WITH
IF ::oSQLTerminal:RecCount()==0
::oSQLTerminal:AddNew()
::oSQLTerminal:id_empresa:= AppData:cIDCompany
::oSQLTerminal:id_caja := ::oNEEstacion:Value
::oSQLTerminal:Update()
ENDIF
::oSQLTurnos:AddNew()
::oSQLTurnos:id_empresa := AppData:cIDCompany
::oSQLTurnos:id_caja := ::oNEEstacion:Value
::oSQLTurnos:fecha_venta := ::oFechaVenta:value
::oSQLTurnos:id_turno := ::oNumTurno:Value
::oSQLTurnos:fondo_fijo := ::oFondoFijo:Value
::oSQLTurnos:time_open := Time()
::oSQLTurnos:Update()
En la seccion de descargas hay ejemplos casi completos de
amb usando mysql. y te pueden orientar bastante. despues
solo cambias el datasource.
Saludos
Gabo
Mensajes: 104
Registrado: Mié Oct 27, 2010 1:36 am

TWebDataSource

Mensaje por Gabo »

Ramón
Checa la sección de descargas los ejemplos de TMySQL y TMariaDb. Ahi rompes el paradigma de los dbf.
Seek en MySQL
cValorKey:= ::oMySqlDSMain:QueryValue( "SELECT xClaveCampo FROM
articulos WHERE id_articulo='" + cClaveArticulo + "'" )
IF cValorKey == NIl
MsgStop( "Articulo no existe, dar de alta" )
ELSE
MsgStop( "Articulo ya existe, editar registro" )
ENDIF
Saludos
PEDRO DE LEON RODAS[3]
Mensajes: 266
Registrado: Mar Oct 28, 2008 4:41 am

TWebDataSource

Mensaje por PEDRO DE LEON RODAS[3] »

Yo lo hago de esta manera:
Uso un dataset TsqlQuery llamado consulta
::oDBFClientes:Gotop()
Do while .not. ::oDBFClientes:Eof()
::Consulta:cSelect=”select * from timbres where rfc='" + ::oDBFClientes:RFC + "' “
::Consulta:open()
iF ::Consulta:Reccount()>0 ///// con esto verifico si la consulta me regreso algun registro (Recuerda Reccount es el total de registros en la tabla)
::Consulta:Edit()
::Consulta:accesos += 1
::Consulta:Update()
Else
::Consulta:AddNew()
::Consulta:nombre=::oDBFClientes:nombre
::Consulta:Update()
Endif

::oDBFClientes:Skip()
Enddo
Y con este metodo no he tenido problemas.
Saludos

<zeasoftware@hotmail.com> escribió en el mensaje de noticias:[email=538d5095@svctag-j7w3v3j....]538d5095@svctag-j7w3v3j....[/email]
Gracias, actualmente hago esto, pues de inicio quiero entender bien el funcionamiento, para empezar a implementarlo en una sección de mi sistema, que un cliente me ha pedido.
Quiero hacer algo parecido al manejo de DBF:
Si Existe_el_dato
actualizo_un_campo
Sino
agrego_datos
FinSi
//Supongo tendrí­a que usar el MODIFY, pero no me darí­a el mismo efecto que busco arriba.
::oSQLTable1:Open()
With Object ::oDBFClientes
:Open()
:GoTop()
While !:Eof()
::oWebDataSource1:Execute("Select * From timbres Where RFC = '" + :RFC + "'" )
lExiste := ( ::oWebDataSource1:nAffectedRows > 0 )
//aunque regresa que el dato existe, pero siempre está en el renglón 1
IF ( lExiste ) //::oSQLTable1:Seek(:RFC) )
//funciona bien, pero siempre está en el registro 1
::oSQLTable1:FastEdit()
::oSQLTable1:accesos += 1
::oSQLTable1:FastUpdate()
Else
//aaquí­ anexo los datos nuevos, y funciona perfecto.
::oSQLTable1:FastAddNew()
::oSQLTable1:RFC := :RFC
::oSQLTable1:Nombre := :Nombre
::oSQLTable1:FastUpdate()
End
:Skip(1)
End
:Close()
End With
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
https://www.facebook.com/zeasoftware
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"PEDRO DE LEON RODAS" escribió en el mensaje de noticias:538d4ca3$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Que tal Ramón Zea, saludos.
Yo empecé a trabajar con esa clase, logre conectarme a mi base de datos,
inserte e incluso hago consultas, edito registros.
Pero, desafortunadamente me quede estancado al querer controlar los
bloqueos.
En cuanto tenga otro tiempo seguiré buscando y estoy seguro que le voy a
sacar todo lo bueno de esta clase.
Te pongo unos ejemplos de como logre conectarme con la bd en el hosting.
Este codigo lo puse en mi prg principal
AppData:AddData("base",TWebDataSource():Create())
WITH OBJECT AppData:Base //Defino propiedades del DataSource
:cConnect := "www.midominio.com" /// Si tu dominio es por ejemplo
www.programas.com
:cCryptKey :="x1x2a3" //// Esto es lo que pones en el archivo
xa_wdsMySql.php que subistes a tu hosting
:cDatabase := "midomini_mi_bd" /// nombre de la base de datos, tienes
que escribir primero los ocho digitos de tu dominio seguido de un guin bajo
y el nombre de la base de datos
:cPhpModule:= "xa_wdsMySql.php" //// En esta parte tienes que
especificar el nombre del archivo php
:nDBType:= dtMYSQL
:nPort=80
:nTimeOut=30
:lDisplayErrors=.T.
:lAbortOnErrors := .T.
IF !:Connect()
MSGSTOP('NO SE PUEDE CONECTAR AL SERVIDOR')
QUIT
else
ENDIF
END WITH
Y si quieres hacer consultas puedes usar la forma de los datasets TsqlQuery.
Eejemplo:
::Mi_dataset:oDataSource=AppData:Base //// Esto es lo que esta arriba
AppData:AddData("base",TWebDataSource():Create())
::Mi_dataset:cSelect="select * from mi_tabla Where
mi_campo='"+Variable_buscar+"' "
::Mi_dataset:Open()
::Mi_dataset:Edit() //// De esta forma puedes editar un registro
::Mi_dataset:mi_campo=mi_variable
::Mi_dataset:Update()
O si quieres insertar un registro a la tabla puedes hacer lo siguiente:
::Mi_dataset:cSelect="select * from mi_tabla Where 0 "
::Mi_dataset:Open()
::Mi_dataset:AddNew() //// De esta forma puedes editar un registro
::Mi_dataset:mi_campo=mi_variable
::Mi_dataset:Update()
No soy bueno para explicar por medio de letras, espero te sirva de algo.
Saludos
--
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

TWebDataSource

Mensaje por zeasoftware »

Gracias, es que yo lo estaba haciendo todo con el TSQLTable, y QueryRow, cuestión de adaptarme, voy a revisar el ejemplo del área de descargar, psolo que no tiene los recursos, y aun no logro compilarlo, pero, llevo leido algunos PRG.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
https://www.facebook.com/zeasoftware
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"PEDRO DE LEON RODAS" <7773613810@prodigy.net.mx> escribió en el mensaje de noticias:[email=538e0088@svctag-j7w3v3j....]538e0088@svctag-j7w3v3j....[/email]
Yo lo hago de esta manera:
Uso un dataset TsqlQuery llamado consulta
::oDBFClientes:Gotop()
Do while .not. ::oDBFClientes:Eof()
::Consulta:cSelect=”select * from timbres where rfc='" + ::oDBFClientes:RFC + "' “
::Consulta:open()
iF ::Consulta:Reccount()>0 ///// con esto verifico si la consulta me regreso algun registro (Recuerda Reccount es el total de registros en la tabla)
::Consulta:Edit()
::Consulta:accesos += 1
::Consulta:Update()
Else
::Consulta:AddNew()
::Consulta:nombre=::oDBFClientes:nombre
::Consulta:Update()
Endif

::oDBFClientes:Skip()
Enddo
Y con este metodo no he tenido problemas.
Saludos

<zeasoftware@hotmail.com> escribió en el mensaje de noticias:[email=538d5095@svctag-j7w3v3j....]538d5095@svctag-j7w3v3j....[/email]
Gracias, actualmente hago esto, pues de inicio quiero entender bien el funcionamiento, para empezar a implementarlo en una sección de mi sistema, que un cliente me ha pedido.
Quiero hacer algo parecido al manejo de DBF:
Si Existe_el_dato
actualizo_un_campo
Sino
agrego_datos
FinSi
//Supongo tendrí­a que usar el MODIFY, pero no me darí­a el mismo efecto que busco arriba.
::oSQLTable1:Open()
With Object ::oDBFClientes
:Open()
:GoTop()
While !:Eof()
::oWebDataSource1:Execute("Select * From timbres Where RFC = '" + :RFC + "'" )
lExiste := ( ::oWebDataSource1:nAffectedRows > 0 )
//aunque regresa que el dato existe, pero siempre está en el renglón 1
IF ( lExiste ) //::oSQLTable1:Seek(:RFC) )
//funciona bien, pero siempre está en el registro 1
::oSQLTable1:FastEdit()
::oSQLTable1:accesos += 1
::oSQLTable1:FastUpdate()
Else
//aaquí­ anexo los datos nuevos, y funciona perfecto.
::oSQLTable1:FastAddNew()
::oSQLTable1:RFC := :RFC
::oSQLTable1:Nombre := :Nombre
::oSQLTable1:FastUpdate()
End
:Skip(1)
End
:Close()
End With
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
https://www.facebook.com/zeasoftware
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"PEDRO DE LEON RODAS" escribió en el mensaje de noticias:538d4ca3$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Que tal Ramón Zea, saludos.
Yo empecé a trabajar con esa clase, logre conectarme a mi base de datos,
inserte e incluso hago consultas, edito registros.
Pero, desafortunadamente me quede estancado al querer controlar los
bloqueos.
En cuanto tenga otro tiempo seguiré buscando y estoy seguro que le voy a
sacar todo lo bueno de esta clase.
Te pongo unos ejemplos de como logre conectarme con la bd en el hosting.
Este codigo lo puse en mi prg principal
AppData:AddData("base",TWebDataSource():Create())
WITH OBJECT AppData:Base //Defino propiedades del DataSource
:cConnect := "www.midominio.com" /// Si tu dominio es por ejemplo
www.programas.com
:cCryptKey :="x1x2a3" //// Esto es lo que pones en el archivo
xa_wdsMySql.php que subistes a tu hosting
:cDatabase := "midomini_mi_bd" /// nombre de la base de datos, tienes
que escribir primero los ocho digitos de tu dominio seguido de un guin bajo
y el nombre de la base de datos
:cPhpModule:= "xa_wdsMySql.php" //// En esta parte tienes que
especificar el nombre del archivo php
:nDBType:= dtMYSQL
:nPort=80
:nTimeOut=30
:lDisplayErrors=.T.
:lAbortOnErrors := .T.
IF !:Connect()
MSGSTOP('NO SE PUEDE CONECTAR AL SERVIDOR')
QUIT
else
ENDIF
END WITH
Y si quieres hacer consultas puedes usar la forma de los datasets TsqlQuery.
Eejemplo:
::Mi_dataset:oDataSource=AppData:Base //// Esto es lo que esta arriba
AppData:AddData("base",TWebDataSource():Create())
::Mi_dataset:cSelect="select * from mi_tabla Where
mi_campo='"+Variable_buscar+"' "
::Mi_dataset:Open()
::Mi_dataset:Edit() //// De esta forma puedes editar un registro
::Mi_dataset:mi_campo=mi_variable
::Mi_dataset:Update()
O si quieres insertar un registro a la tabla puedes hacer lo siguiente:
::Mi_dataset:cSelect="select * from mi_tabla Where 0 "
::Mi_dataset:Open()
::Mi_dataset:AddNew() //// De esta forma puedes editar un registro
::Mi_dataset:mi_campo=mi_variable
::Mi_dataset:Update()
No soy bueno para explicar por medio de letras, espero te sirva de algo.
Saludos
--
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

TWebDataSource

Mensaje por zeasoftware »

Funcionó excelente!!!
Gracias,
Haré pruebas con lo del bloqueo, a ver si tengo mis 5 minutos de iluminación... jajajajajaja
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
https://www.facebook.com/zeasoftware
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"PEDRO DE LEON RODAS" <7773613810@prodigy.net.mx> escribió en el mensaje de noticias:[email=538e0088@svctag-j7w3v3j....]538e0088@svctag-j7w3v3j....[/email]
Yo lo hago de esta manera:
Uso un dataset TsqlQuery llamado consulta
::oDBFClientes:Gotop()
Do while .not. ::oDBFClientes:Eof()
::Consulta:cSelect=”select * from timbres where rfc='" + ::oDBFClientes:RFC + "' “
::Consulta:open()
iF ::Consulta:Reccount()>0 ///// con esto verifico si la consulta me regreso algun registro (Recuerda Reccount es el total de registros en la tabla)
::Consulta:Edit()
::Consulta:accesos += 1
::Consulta:Update()
Else
::Consulta:AddNew()
::Consulta:nombre=::oDBFClientes:nombre
::Consulta:Update()
Endif

::oDBFClientes:Skip()
Enddo
Y con este metodo no he tenido problemas.
Saludos

<zeasoftware@hotmail.com> escribió en el mensaje de noticias:[email=538d5095@svctag-j7w3v3j....]538d5095@svctag-j7w3v3j....[/email]
Gracias, actualmente hago esto, pues de inicio quiero entender bien el funcionamiento, para empezar a implementarlo en una sección de mi sistema, que un cliente me ha pedido.
Quiero hacer algo parecido al manejo de DBF:
Si Existe_el_dato
actualizo_un_campo
Sino
agrego_datos
FinSi
//Supongo tendrí­a que usar el MODIFY, pero no me darí­a el mismo efecto que busco arriba.
::oSQLTable1:Open()
With Object ::oDBFClientes
:Open()
:GoTop()
While !:Eof()
::oWebDataSource1:Execute("Select * From timbres Where RFC = '" + :RFC + "'" )
lExiste := ( ::oWebDataSource1:nAffectedRows > 0 )
//aunque regresa que el dato existe, pero siempre está en el renglón 1
IF ( lExiste ) //::oSQLTable1:Seek(:RFC) )
//funciona bien, pero siempre está en el registro 1
::oSQLTable1:FastEdit()
::oSQLTable1:accesos += 1
::oSQLTable1:FastUpdate()
Else
//aaquí­ anexo los datos nuevos, y funciona perfecto.
::oSQLTable1:FastAddNew()
::oSQLTable1:RFC := :RFC
::oSQLTable1:Nombre := :Nombre
::oSQLTable1:FastUpdate()
End
:Skip(1)
End
:Close()
End With
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
https://www.facebook.com/zeasoftware
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"PEDRO DE LEON RODAS" escribió en el mensaje de noticias:538d4ca3$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Que tal Ramón Zea, saludos.
Yo empecé a trabajar con esa clase, logre conectarme a mi base de datos,
inserte e incluso hago consultas, edito registros.
Pero, desafortunadamente me quede estancado al querer controlar los
bloqueos.
En cuanto tenga otro tiempo seguiré buscando y estoy seguro que le voy a
sacar todo lo bueno de esta clase.
Te pongo unos ejemplos de como logre conectarme con la bd en el hosting.
Este codigo lo puse en mi prg principal
AppData:AddData("base",TWebDataSource():Create())
WITH OBJECT AppData:Base //Defino propiedades del DataSource
:cConnect := "www.midominio.com" /// Si tu dominio es por ejemplo
www.programas.com
:cCryptKey :="x1x2a3" //// Esto es lo que pones en el archivo
xa_wdsMySql.php que subistes a tu hosting
:cDatabase := "midomini_mi_bd" /// nombre de la base de datos, tienes
que escribir primero los ocho digitos de tu dominio seguido de un guin bajo
y el nombre de la base de datos
:cPhpModule:= "xa_wdsMySql.php" //// En esta parte tienes que
especificar el nombre del archivo php
:nDBType:= dtMYSQL
:nPort=80
:nTimeOut=30
:lDisplayErrors=.T.
:lAbortOnErrors := .T.
IF !:Connect()
MSGSTOP('NO SE PUEDE CONECTAR AL SERVIDOR')
QUIT
else
ENDIF
END WITH
Y si quieres hacer consultas puedes usar la forma de los datasets TsqlQuery.
Eejemplo:
::Mi_dataset:oDataSource=AppData:Base //// Esto es lo que esta arriba
AppData:AddData("base",TWebDataSource():Create())
::Mi_dataset:cSelect="select * from mi_tabla Where
mi_campo='"+Variable_buscar+"' "
::Mi_dataset:Open()
::Mi_dataset:Edit() //// De esta forma puedes editar un registro
::Mi_dataset:mi_campo=mi_variable
::Mi_dataset:Update()
O si quieres insertar un registro a la tabla puedes hacer lo siguiente:
::Mi_dataset:cSelect="select * from mi_tabla Where 0 "
::Mi_dataset:Open()
::Mi_dataset:AddNew() //// De esta forma puedes editar un registro
::Mi_dataset:mi_campo=mi_variable
::Mi_dataset:Update()
No soy bueno para explicar por medio de letras, espero te sirva de algo.
Saludos
--
Responder