Consejo para comandos SQL

Consejo para comandos SQL

Postby Armando » 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:

Code: Select all  Expand view  RUN
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.

Code: Select all  Expand view  RUN
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
User avatar
Armando
 
Posts: 3239
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Postby MauroArevalo » Tue Jun 24, 2008 7: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....
User avatar
MauroArevalo
 
Posts: 107
Joined: Thu Jan 19, 2006 11:47 pm
Location: Bogota DC. Colombia

Postby Armando » Thu Jun 26, 2008 3: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.

Code: Select all  Expand view  RUN
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
User avatar
Armando
 
Posts: 3239
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Postby carlos vargas » Thu Jun 26, 2008 4:38 pm

Recuedo que en fox pro existia una instruccion que permitia hacer algo asi:
Code: Select all  Expand view  RUN
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)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Postby Carlos Mora » Thu Jun 26, 2008 6: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.
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 44 guests