Pregunta Sobre Mysql

Post Reply
User avatar
ruben Dario
Posts: 986
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Pregunta Sobre Mysql

Post by ruben Dario »

Como puedo hacer cambios a los datos a el resultado de una sentencia SQL.

Code: Select all

Qte3 :=  "SELECT A1.codcia,A1.tipdoc,A1.planta,A1.numorden,A1.codprod,A1.verprod,A1.codprov,A1.consec,"+;
          "A1.ordcom,A1.fecordc,A1.ord_ant,A1.mconsi,A1.destino AS destino_,A1.dir_dest AS dir_dest_,A1.valunit,"+;
          "A1.desc_por,A1.pesos,A1.codpag,A1.flete,A1.tflete,A1.cantidad,A1.porprod,A1.fec_soli,A1.fec_conf,"+;
          "A1.fec_prog,A1.hora_prog,A1.vend,A1.codrut,A1.`status`,A1.tstatus,A1.bob,A1.bobant,A1.valtot,"+;
          "A1.tvaltot,A1.kiltot,A1.kilneto,A1.tkilneto,A1.tkiltot,A1.pesoteo,A1.tpesoteo,A1.dev_unid,A1.dev_kilo,"+;
          "A1.dev_teor,A1.fec_crea,A1.firma,A1.codanu,A1.tcodanu,A1.codcum,A1.tcodcum,A1.fec_anu,A1.fec_cum,"+;
          "A1.fec_stat,A1.blodes,A1.atrazo,A1.fec_entinv,A1.fec_despa,A1.anoprec,A1.docprec,A1.sta_bloq,"+;
          "A1.tsta_bloq,A1.usu_stat,A1.fec_rec,A1.hor_rec,A1.cumprod,A1.tip_ped,A1.ttip_ped,A1.documen,"+;
          "A1.notafac,A1.pedprog,A3.nombre AS nombre_clie,A3.sigla,A4.zona,A4.indus,A4.grupo,A4.maxcred,A4.ciud_des,"+;
          "A4.depto_des,A4.direc_des,A4.telef1_des,A4.telef2_des,A5.nombre AS nombre_grupo,A6.nombre AS nombre_vend,"+;
          "A7.nombre AS nombre_zona,A8.simbolo,A8.referencia,A8.largo,A8.ancho,A8.ancho_m,A8.fuel_l,A8.fuel_f,"+;
          "A8.kilmil,A8.metros,A8.solapa,A8.anch_prog,A8.calibre,A8.gramaje,A8.selle,A8.caras,A8.colores,"+;
          "A8.pigmto,A8.tratado,A8.gsaac,A8.saac,A8.gsaot,A8.saot,A8.gplt,A8.plt,A8.fac,A8.tfac,A8.microp,"+;
          "A8.biodeg,A8.documen AS documen_prod,A9.nombre AS nombre_gmat,A10.nombre AS nombre_mat,"+;
          "A10.nombre1 AS nombre_matc,A11.nombre AS nombre_gest,A12.nombre AS nombre_est,A12.nombre1 AS nombre_estc,"+;
          "A13.nombre AS nombre_ruta,A14.nombre AS nombre_tsel,A15.nombre AS tipo_factu,A16.nombre AS nombre_flete,"+;
          "A17.nombre AS nombre_plant,A18.nombre AS nombre_sector,A19.nombre AS nombre_codpag,A20.nombre AS nombre_status,"+;
          "A21.nombre AS nombre_tipped,A22.nombre AS nombre_gmat1,A23.nombre AS nombre_mat1,A23.nombre1 AS nombre_mat2c "+;
          "FROM pedidos AS A1 "+;
          "LEFT JOIN cliente AS A3 ON A1.codprov = A3.codprov "+;
          "LEFT JOIN cliesec AS A4 ON A1.planta = A4.planta AND A1.codprov = A4.codprov AND A1.consec = A4.consec "+;
          "LEFT JOIN kgrupo AS A5 ON A4.grupo = A5.grupo "+; 
          "LEFT JOIN kvended AS A6 ON A1.vend = A6.vend "+;
          "LEFT JOIN kzonas AS A7 ON A4.zona = A7.zona "+;
                   "LEFT JOIN ktipomat AS A23 ON A8.planta = A23.planta AND A8.gsaot = A23.gsaac AND A8.saot = A23.saac "+;
          "WHERE "+;
               "A1.fec_soli BETWEEN '"+dtoc(D_FECHAX)+"' AND '"+dtoc(H_FECHAX)+"' AND "+;
          "A1.status BETWEEN '"+ALLTRIM(D_STATUS)+"' AND '"+ALLTRIM(H_STATUS)+"' "+;
          sta_prec+"  "+ornd_mie 
 

Code: Select all

  EjeQueri(0,@oDbfxls,cQue1)
     if oDbfxls:RecordCount() =0 //ADORecCount()
        MsgInfo("No Hay Datos ","Informacion")  //  MsgAlert( "No Hay Datos ","Informacion" )
        oDbfxls:Close()
        Return (.t.)
     endif
     nLinea := 1 ; nHasta := oDbfxls:RecordCount()
     oDbfxls:MoveFirst()  


 
Despues de ejecutar la consulta por ejemplo quiero hacer _ a unas columnas, pero no permite hacer la actualizacion
este es lo que quiero hacer, no se si se puede hacer directamente desde la sentencia SQL.

Code: Select all

   Do While .Not. if(aContl[20],oDbfxls:EOF(),EOF())
       x_cant   := RADAField("cantidad",oDbfxls)
       x_peso   := RADAField("kilmil",oDbfxls)
       x_metr   := RADAField("metros",oDbfxls)
       x_tvalt  := RADAField("tvaltot",oDbfxls)
       x_tkilt  := RADAField("tkiltot",oDbfxls)
       x_tvalt1 := RADAField("tvaltot",oDbfxls)
       x_tkilt1 := RADAField("tkiltot",oDbfxls)
       x_devun  := RADAField("dev_unid",oDbfxls)
       x_bodeg  := RADAField("bob",oDbfxls)
       x_devkil := RADAField("dev_kilo",oDbfxls)

       if RADAField("fac",oDbfxls)="0"
          cant_kilos := x_cant*(x_peso/1000)
          unid_xprod := x_cant-x_tvalt-x_tvalt1-x_bodeg+x_devun
          kil_xprod  := unid_xprod*(x_peso/1000)
       else
          cant_kilos := x_cant
          kil_xprod  := x_cant-x_tkilt-x_tkilt1-x_bodeg+x_devkil
      endif
       if RADAField("cumprod",oDbfxls)=1
          unid_xprod := 0
          kil_xprod  := 0
       endif
       oDbfxls:Fields("porprod"):Value    := unid_xprod
       oDbfxls:Update()
       oDbfxls:MoveNext() 

     EndDo 
 
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
Raymundo Islas M.
Posts: 590
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Re: Pregunta Sobre Mysql

Post by Raymundo Islas M. »

Ruben,

Algo similar intente hacer hace un tiempo sin lograrlo, tiene que ver con el tipo de cursor de tu recordset, los datos de tu tablas, etc.

No digo que no se pueda, sin embargo, en mi caso fue mucho mas facil y rapido trabajar los datos en un array usando :GetRows() ,ya que la conversion del RS al arreglo sin importar el numero de registros es instantanea !

Saludos
FWH 10.6 + xHarbour + Borland 582
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Pregunta Sobre Mysql

Post by horacio »

No recuerdo bien pero cuando relacionás más de una tabla en una consulta no funciona grabar el recordset con nuevos valores pero me parece que hay alguna instrucción que te facilita esta operación. Visitá este sitio http://www.sqlcmd.blogspot.com, allí hay algo sobre este tema. Yo trabajo con arrays, lo mismo que Raymundo, me resulta más fácil manejar los datos.
Espero te sirva. saludos
Post Reply