FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Consejo para comandos SQL
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM

Consejo para comandos SQL

Posted: Tue Jun 24, 2008 12:57 AM
Amigos:

Como una peque帽isima aportaci贸n a los que como yo nos ha costado mucho migrar a comandos SQL, les dejo este consejo para clarificar el c贸digo de los comandos SQL, sobre todo por si lleva coma (,) , apostrofe (') o comillas ("), veamos el antes y el despues:

oRsDet:Source	:= "SELECT detppn.*,hdrppn.hdr_can,hdrppn.hdr_fde,hdrppn.hdr_cpt,proveedor.pro_nom " + ;
						"FROM detppn,hdrppn,proveedor WHERE detppn.det_fol = hdrppn.hdr_fol " + ;
						"AND hdrppn.hdr_pro = proveedor.pro_pro AND ! hdrppn.hdr_can AND detppn.det_pro = " + ;
						"'" + cPro + "' ORDER BY detppn.det_prv,detppn.det_fol"


El c贸digo anterior aunque funciona es sumamente dificil de entender, ahora veamos el mismo c贸digo pero en otra presentaci贸n.

oRsDet:Source	:= "SELECT " +;
							"detppn.*," +;
							"hdrppn.hdr_can," +;
							"hdrppn.hdr_fde," +;
							"hdrppn.hdr_cpt," +;
							"proveedor.pro_nom " + ;
						"FROM " +;
							"detppn," +;
							"hdrppn," +;
							"proveedor " +;
						"WHERE " +;
							"detppn.det_fol = hdrppn.hdr_fol " + ;
						"AND " +;
							"hdrppn.hdr_pro = proveedor.pro_pro " +;
						"AND " +;
							"! hdrppn.hdr_can " +;
						"AND " +;
							"detppn.det_pro = '" + cPro + "' " +;
						"ORDER BY " +;
							"detppn.det_prv," +;
							"detppn.det_fol"


Espero sea de ayuda, sobre todo a los que se inician en el mundo SQL.

Un abrazo al foro.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 111
Joined: Thu Jan 19, 2006 11:47 PM

Consejo para comandos SQL

Posted: Tue Jun 24, 2008 07:20 PM

Armando:

Gracias, me aclaro muchos lios de enredo en mi cabeza....

Saludos

Edgar Mauricio Ar茅valo Mogoll贸n.
Bogot谩 DC. Colombia
FWH FTDN, xHarbour 1.2.1, Pelles C, Fivedit, Visual Studio Code, Borland 7.30, Mysql, Dbfs
http://www.hymplus.com http://www.hymlyma.com
Tratando de retomar la programaci贸n....
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM

Consejo para comandos SQL

Posted: Thu Jun 26, 2008 03:47 PM
Mauricio:

Me alegra saber que al menos a ti te haya servido, un comentario m谩s sobre los beneficios de darle formato al c贸digo es que podemos incluirle los comentarios que sean necesarios.

oRsDet:Source	:= "SELECT " +;
							"detppn.*," +;										// Todos los campos del detalle
							"hdrppn.hdr_pro," +;
							"hdrppn.hdr_can," +;
							"hdrppn.hdr_fde," +;
							"hdrppn.hdr_cpt," +;								// Incluimos el concepto
							"proveedor.pro_nom " + ;
						"FROM " +;
							"detppn," +;
							"hdrppn," +;
							"proveedor " +;
						"WHERE " +;
							"detppn.det_fol = hdrppn.hdr_fol " + ;		// El mismo folio
						"AND " +;
							"hdrppn.hdr_pro = proveedor.pro_pro " +;	// El mismo proyecto
						"AND " +;
							"! hdrppn.hdr_can " +;							// Quitamos cancelados
						"AND " +;
							"detppn.det_pro = '" + cPro + "' " +;
						"ORDER BY " +;
							"hdrppn.hdr_pro," +;                 		// Por proyecto
							"detppn.det_fol"									// por folio


Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM

Consejo para comandos SQL

Posted: Thu Jun 26, 2008 04:38 PM
Recuedo que en fox pro existia una instruccion que permitia hacer algo asi:
cContry = "Nicaragua"
cName  = "carlos"

TEXT TO cSQL
   SELECT * FROM customer WHERE customer.country = &cContry AND
       customer.name = &cName
ENDTEXT

oRsDet:Source   = cSQL


esto permitiria una mejor compresion de la instruccion sql eliminado
los delimitadores innecesario. es posible hacer esto?

salu2
carlos vargas
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM

Consejo para comandos SQL

Posted: Thu Jun 26, 2008 06:16 PM

Hola Carlos,

en este momento no puedo probar nada porque en este equipo no tengo harbour, pero creo que la sintaxis es muy parecido:

TEXT INTO oRsDet:Source
SELECT * FROM customer WHERE customer.country = "Nicaragua" AND
customer.name = "Carlos"
ENDTEXT

lo que no creo que te funcione asi es la macrosustituci贸n, porque te van a faltar las comillas dobles para delimitar las constantes, probablemente haga falta algo m谩s.

Un saludo,

carlos.

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"

Continue the discussion