Con Xbrowse si es Campo Null No me genere Error (Solucionado

Con Xbrowse si es Campo Null No me genere Error (Solucionado

Postby ruben Dario » Tue Mar 23, 2010 2:12 pm

Cuando hago una consulta a una base de datos Mysql Usando Sentencias Select, cuando Utilizo Xbrowse o Reporte cuando una de las columnas es Null , me genera un error y me saca del programa.


Code: Select all  Expand view

cQte3 := "SELECT A1.codcia,A1.tipdoc,A1.codprov,A1.codprod,A1.consec,A1.simbolo,A1.referencia,A1.largo,"+;
   "A1.ancho,A1.ancho_m,A1.fuel_l,A1.fuel_f,A1.kilmil,A1.metros,A1.solapa,A1.calibre,A1.tara,A1.dis_fot,"+;
   "A1.selle,A1.ccortcam,A1.cort_cam,A1.mman_iny,A1.man etc....."

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

 


Para Report En es te caso la cuolumna Nombre_estilo esta Null
Code: Select all  Expand view

         COLUMN TITLE "Sta","Item" DATA {||iif(oDatos:Fields("status"):Value=1,"Si","No")}, oDatos:Fields("consec"):Value ;
                FONT 1  SIZE 6 //SHADOW GRID 1 hace la raya vertical
         COLUMN TITLE "Item","Codprod" DATA oDatos:Fields("consec"):Value,oDatos:Fields("codprod"):Value;
                FONT 1  SIZE 12 //SHADOW GRID 1 hace la raya vertical
         COLUMN TITLE "Referencia","Simbolo" DATA oDatos:Fields("simbolo"):Value,oDatos:Fields("referencia"):Value;
                FONT 1  SIZE 20 //SHADOW GRID 1 hace la raya vertical
         COLUMN TITLE "Largo/Alt","Ancho.B.Menor" DATA oDatos:Fields("largo"):Value, ;
                oDatos:Fields("ancho"):Value  FONT 1  SIZE 8
         COLUMN TITLE "Ancho/B.Menor","Solapa" DATA TRANSFORM(oDatos:Fields("ancho_m"):Value,"999.99") ,;
                TRANSFORM(oDatos:Fields("solapa"):Value,"999.99") FONT 1  SIZE 10
         COLUMN TITLE "Fuelle.F","Fuelle.L" DATA TRANSFORM(oDatos:Fields("fuel_f"):Value,"999.99"), ;
                TRANSFORM(oDatos:Fields("fuel_l"):Value,"999.99") FONT 1  SIZE 6  
         COLUMN TITLE "Metros","Peso/Mil" DATA TRANSFORM(oDatos:Fields("metros"):Value,"999.99"), ;
                TRANSFORM(oDatos:Fields("kilmil"):Value,"99.9999") FONT 1  SIZE 6  
         COLUMN TITLE "Tipo.Selle", "Tipo.Estilo" DATA oDatos:Fields("nombre_selle"):Value ,;
                oDatos:Fields("nombre_estilo"):Value FONT 1  SIZE 15
 


Para Xbrowse En es te caso la cuolumna Nombre_estilo esta Null

Code: Select all  Expand view

      REDEFINE XBROWSE oLbx ;
        COLUMNS "planta","codprov","consec","nombre_clie","codprod","simbolo","referencia","largo","ancho";
                ,"ancho_m","fuel_l","fuel_f", "calibre","solapa","metros","kilmil","nombre_estilo","nombre_mat";
                ,"nombre_selle","Ruta","status" ;
        HEADERS "planta","Codigo","Item", "Nombre Tercero","Producto","Simbolo","Referencia","Largo","Ancho","Ancho.May";
               ,"Fuelle Lat","Fuelle_Fon","Calibre","Solapa","Metros","Peso.Mil","Tipo.Estilo","Tipo.Material";
               ,"Tipo.Selle","Nombre_ruta","Activo" ;
        PICTURES nil,nil,nil,nil,nil,nil,nil,"999.9","999.9","999.9","999.9","999.9","999.9","9999.99","9999.9999";
                 ,nil,nil,nil,nil,nil,nil,nil;
        COLSIZES 20,60,20,250,60,220,120,60,60,90,60,60,60,60,60,60,180,180,120,60 ;
        JUSTIFY .F.,.F.,.F.,.F.,.F.,.F.,.F.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.F.,.F.,.F.,.F.;
        OF oDlgbrow ID 4001 ;
        RECORDSET  oDat15
      par_browse(X_TIPBROW,oLbx,aContl[20],0,oDat15 )
 


Como puedo controlar el Campo Null
Last edited by ruben Dario on Wed Mar 24, 2010 10:23 pm, edited 1 time in total.
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1064
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: Con Xbrowse si es Campo Null No me genere Error

Postby nageswaragunupudi » Tue Mar 23, 2010 2:41 pm

If you are using ADO, NULL values are returned as NIL.
XBrowse shows NIL values properly.

For reports, instead of using Transform(...), please use DATA oRs:Fields("..."):Value PICTURE "999.99"
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10458
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Con Xbrowse si es Campo Null No me genere Error

Postby nageswaragunupudi » Tue Mar 23, 2010 3:42 pm

Self contained sample showing handling of NULL values by XBrowse and XBrowse's Report method:
Code: Select all  Expand view
#include 'fivewin.ch'
#include 'adodef.ch'    // \fwh\include folder
#include 'xbrowse.ch'

function Main()

   local oCn, oRs
   local oDlg, oBrw

   oCn      := ConnectMySql()
   CreateTable( oCn )  // Create Table with NULLs
   oRs      := OpenTable( oCn )

   DEFINE DIALOG oDlg SIZE 200,250 PIXEL
   @ 5,5 XBROWSE oBrw SIZE -5,-5 PIXEL OF oDlg ;
      COLUMNS 'ID','Amount' ;
      PICTURES '99','9,999,999' ;
      RECORDSET oRs ;
      FOOTERS CELL LINES NOBORDER

   WITH OBJECT oBrw:Amount
      :lTotal   := .t.
      :nTotal   := 0
   END

   WITH OBJECT oBrw
      :MakeTotals()
      :nStretchCol := STRETCHCOL_LAST
      :bRClicked   := { || oBrw:Report() }
      :CreateFromCode()
   END
   ACTIVATE DIALOG oDlg CENTERED
   oRs:Close()
   oCn:Close()

return nil

static function ConnectMySql()

   local oCn
   local cStr := "Driver={MySQL ODBC 5.1 Driver};" + ;
                 "Server=localhost;" + ;
                 "Database=<yourdatabase>;" + ;
                 "User=root;Password=<yourpassword>;Option=3;"

   oCn   := TOleAuto():New( 'ADODB.Connection' )
   oCn:Open( cStr )

   if oCn:State < 1
      MsgInfo( 'Connect Fail' )
      Quit
   endif

return oCn

static function CreateTable( oCn )

   local cSql
   local n

   TRY
      oCn:Execute( 'DROP TABLE TESTNULLS' )
   CATCH
   END

   TEXT INTO cSql
   CREATE TABLE TESTNULLS (
   ID INT PRIMARY KEY,
   AMOUNT INT
   )
   ENDTEXT

   oCn:Execute( cSql )

   for n := 1 to 9
      cSql  := "INSERT INTO TESTNULLS VALUES ( " + ;
               LTrim( Str( n ) ) + ","

      cSql  += If( n % 3 == 0, "NULL", LTrim( Str( HB_RandomInt( 10000, 999900 ) ) ) )
      cSql  += " )"

      oCn:Execute( cSql )

   next n

return nil

static function OpenTable( oCn )

   local oRs

   oRs   := TOleAuto():New( 'ADODB.RecordSet' )

   WITH OBJECT oRs
      :ActiveConnection := oCn
      :Source           := 'TESTNULLS'
      :CursorLocation   := adUseClient

      :Open()
   END

return oRs
 

Browse:
Image
oBrw:Report()
Image
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10458
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Con Xbrowse si es Campo Null No me genere Error

Postby ruben Dario » Tue Mar 23, 2010 7:13 pm

nageswaragunupudi wrote:If you are using ADO, NULL values are returned as NIL.
XBrowse shows NIL values properly.

For reports, instead of using Transform(...), please use DATA oRs:Fields("..."):Value PICTURE "999.99"



El Problema que Tengo no es en la captura de los datos, si no cuando hago una consulta , con varias tablas. Posiblemente Unos de los datos es Nulo, como hago que me muestre datos Nulos en Xbrowse y Report
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1064
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: groiss, richard-service and 69 guests