Blog sobre programación en VFP, Actualizado por Jorge Mota en Guatemala ;)



Archivo MensualJunio 2007



Variado 27 Jun 2007 08:31 am

Descarga de software 1 nuevo cada día…

,

Pues navegando por la red me encontre con este sitio: http://www.giveawayoftheday.com en el que nos permiten descargar 1 programa (+ 1 juego de bono) al día, con la única limitante que nada más podrás instalarlo ese día, y el software no tendrá soporte técnico ni derecho a upgrades (En algunos), todo el soft que puedes bajar es comercial, y está sirviendo para que muchos puedan darse a conocer.

Sí te pones en contacto con ellos, puedes enviarle tu soft, y así darte a conocer al mundo.

Una interesante forma de negocio.

,

Sin Categoría & Desarrollo & Ideas 12 Jun 2007 03:08 pm

Formateando datos para usar con SQL PassTrough (SPT)

, , , , , ,

Pues como se puede ver en estos artículos podemos usar el ? para que el Fox formatée correctamente los valores, el debuggear esos scripts sql son muchas veces bastante difíciles, sobre todo cuando nos conectamos aVFP por medio de ODBC y nos dice “Tipo de dato incorrecto” / “Data type Mismatch” y no sabemos por donde buscar.

Lo ideal también puede ser almacenar el script en un .sql o .txt para su posterior ejecución, allí tenemos que lidiar con el formato a enviar a cada cadena.

Esta función FormatoDato, sirve para datos VFP o Sql Server (podría servir para otros motores, excepto con tipos Date o Datetime, ya que usa el formato de fechas de Sql Server)

Para otros motores de datos, tendrá que modificar el tratamiento de Fechas.

La función:

Function FormatoValor(luValor, lSql) As String
	Local luReturn
	luTipo = Vartype(luValor)
	Do Case
		Case luTipo = [C]
			luReturn = [']+Alltrim(luValor)+[']
		Case Inlist(luTipo,[I], [N], [Y])
			lcNum = Alltrim(Transform(luValor))
			If [.] $ lcNum
				luReturn = Transform(luValor)
			Else
				luReturn = Alltrim(Transform(luValor))
			Endif
		Case luTipo = [D]
			If !lSql
				If Empty(luValor)
					luReturn =[{}]
				Else
					luReturn = [Date(] + Alltrim(Transform(Year(luValor)))+[,]+Alltrim(Transform(Month(luValor)))+[,]+Alltrim(Transform(Day(luValor)))+[)]
				EndIf
			Else
				If Empty(luValor)
					luReturn =[Null]
				Else
					luReturn = [{d '] + Alltrim(Transform(Year(luValor)))+[-]+Alltrim(Transform(Month(luValor)))+[-]+Alltrim(Transform(Day(luValor)))+['}]
				EndIf
			Endif
		Case luTipo = [T]
			If Empty(luValor)
				luReturn = [Null]
			Else
				luReturn = [{ ts ']+Alltrim(Transform(Year(luValor)))+[-]+Alltrim(Transform(Month(luValor)))+[-]+Alltrim(Transform(Day(luValor)))+[ ]+Alltrim(Transform(Hour(luValor)))+[:]+Alltrim(Transform(Minute(luValor)))+[:]+Alltrim(Transform(Sec(luValor)))+['}]
			Endif
		Case luTipo = [X]
			luReturn = [Null]
		Case luTipo = [L]
			luReturn = luValor
		Otherwise
			luReturn=[']+Alltrim(Transform(luValor))+[']
	Endcase
	Return Transform(luReturn)
Endfunc

También puede descargarla desde acá: http://fox.desdeguate.com/descargas/vfp/formatodato.prg

Un ejemplo sería

Set textmerge on to Memvar cSql noshow
\ insert into tabla (CampoC, CampoT, CampoN) values (< >,< >,< >)
set textmerge to

Lo que daría como resultado para vfp
insert into tabla (CampoC, CampoT, CampoN) values (’ValorCampo’,date(2006,05,06),10.50)

sí usaramos el segundo parámetro:
insert into tabla (CampoC, CampoT, CampoN) values (’ValorCampo’,{d ‘2006-05-06′ },10.50)

También puede agregar su lógica de selección de motor a la función para que todo el trabajo sea transparente!.

Saludos

, , , , , ,