Versão atual:

Erro no Browse com FWMarkBrowse MVC com tabela temporária

Bom dia,

Estou tendo um problema em uma tela que há 3 browse's que se relacionam. Os 3 são alimentados por tabelas temporárias sendo dois deles MARKBROWSE's. O usuário tem que selecionar qual item ele deseja no primeiro browse "PRODOC" para ser listado no segundo browse "Conjugacoes Possiveis" onde ele selecionará pelo MARK quais itens ele deseja visualizar as cores no terceiro browse "Cores Conjugadas" através do botão "Conj. Cores". No terceiro browse que também é MARK, há um erro no browse onde não é possível selecionar um item da lista, independente de onde o usuário seleciona, apenas a primeira linha é selecionada. Gostaria de saber se alguém já passou por algo parecido que possa me ajudar.

Código da tela e do botão:

//Funçao da Tela

Static Function aConjugar(oModel)

    Local aCoors        := FWGetDialogSize( oMainWnd )
    Local oPanelUp, oPanelUp, oPanelCent, oPanelDown, oBrowseUp, oRelacZA4, oRelacZA5, oTempTablC
    Local aFieldsPro    :={}
    Local aColunaPro    :={}
    Local aSeekPro      :={}
    Local aFieldsPr2    :={}
    Local aColunaPr2    :={}
    Local aSeekPr2      :={} 
    Local aFieldsP3     :={}
    Local aColunaP3     :={} 
    Local aSeekP3       :={}  
    Local cAliasPro
    Local cTablePro 
    Local cQueryCor          
    Local cQueryPro
    Local cQueryPro2    
    Local cQueryPr2
    Local cQueryPr3
    Local nNumConj      := 1
    Local nPasso1
    Local nPasso2
    Local nResto
    Local cQueryUP    
    Private cAliasPr3
    Private cTablePr3    
    Private cAliasPr2
    Private cTablePr2
    Private oBrowseRight, oFWLayer, oBrowseLeft

    //Criando Campos PRODOC 1

        aAdd(aFieldsPro, {"STATUS",  "C", 1,  0})
        aAdd(aFieldsPro, {"PRODOC",  "C", 5,  0})            
        aAdd(aFieldsPro, {"PASSO",   "N", 3,  0})
        aAdd(aFieldsPro, {"DESCR",   "C", 120, 0})
        aAdd(aFieldsPro, {"CODCLI",  "C", 3,  0})
        aAdd(aFieldsPro, {"CLI",     "C", 50, 0})
        aAdd(aFieldsPro, {"IDCONJ",  "N", 5,  0})

        aAdd(aColunaPro, {"PRODOC"        ,"PRODOC"  ,"C"  ,5   ,0,"@!"})    
        aAdd(aColunaPro, {"PASSO"         ,"PASSO"   ,"N"  ,3   ,0,"@E 999"})        
        aAdd(aColunaPro, {"Descricao"        ,"DESCR"   ,"C"  ,120  ,0,"@!"})           
        aAdd(aColunaPro, {"Cliente"       ,"CLI"     ,"C"  ,50  ,0,"@!"})    

        aAdd(aSeekPro,{"STATUS"        ,{{"","C",1  ,0,"STATUS" , "@!"}}})
        aAdd(aSeekPro,{"PRODOC"        ,{{"","C",5  ,0,"PRODOC" , "@!"}}})
        aAdd(aSeekPro,{"PASSO"          ,{{"","N",3  ,0,"PASSO"  , "@E 999"}}})      
        aAdd(aSeekPro,{"Descricao"     ,{{"","C",120 ,0,"DESCR"  , "@!"}}})        
        aAdd(aSeekPro,{"Cliente"        ,{{"","C",50 ,0,"CLI"    , "@!"}}})      

    //Criando Campos PRODOC 2

        aAdd(aFieldsPr2, {"STATUS",  "C", 1,  0})
        aAdd(aFieldsPr2, {"PRODOC",  "C", 5,  0})            
        aAdd(aFieldsPr2, {"PASSO",   "N", 3,  0})
        aAdd(aFieldsPr2, {"DESCR",   "C", 120, 0})
        aAdd(aFieldsPr2, {"CODCLI",  "C", 3,  0})
        aAdd(aFieldsPr2, {"CLI",     "C", 50, 0})
        aAdd(aFieldsPr2, {"IDCONJ",  "N", 5,  0})                
        aAdd(aFieldsPr2, {"OK",      "C", 2,  0})

        aAdd(aColunaPr2, {"PRODOC"        ,"PRODOC"  ,"C"  ,5   ,0,"@!"})    
        aAdd(aColunaPr2, {"PASSO"         ,"PASSO"   ,"N"  ,3   ,0,"@E 999"})        
        aAdd(aColunaPr2, {"Descricao"        ,"DESCR"   ,"C"  ,120  ,0,"@!"})       
        aAdd(aColunaPr2, {"Cliente"       ,"CLI"     ,"C"  ,50  ,0,"@!"})            

        aAdd(aSeekPr2,{"STATUS"        ,{{"","C",1  ,0,"STATUS" , "@!"}}})
        aAdd(aSeekPr2,{"PRODOC"        ,{{"","C",5  ,0,"PRODOC" , "@!"}}})
        aAdd(aSeekPr2,{"PASSO"          ,{{"","N",3  ,0,"PASSO"  , "@E 999"}}})      
        aAdd(aSeekPr2,{"Descricao"     ,{{"","C",120 ,0,"DESCR"   , "@!"}}})       
        aAdd(aSeekPr2,{"Cliente"        ,{{"","C",50 ,0,"CLI"    , "@!"}}})

    // Campos Cores Conjugadas  

        aAdd(aFieldsP3, {"IDCOR",   "N", 4,  0})    
        aAdd(aFieldsP3, {"DESCRI",  "C", 30, 0})
        aAdd(aFieldsP3, {"PRODOC",  "C", 30, 0})          
        aAdd(aFieldsP3, {"OK",      "C", 2,  0})
        aAdd(aFieldsP3, {"IDCONJ",  "N", 5,  0})

        aAdd(aColunaP3, {"Codigo",    "IDCOR"    ,"N"  ,4   ,0,"@E 9999"})
        aAdd(aColunaP3, {"Descricao", "DESCRI"   ,"C"  ,30  ,0,"@!"})
        aAdd(aColunaP3, {"PRODOC",    "PRODOC"   ,"C"  ,30  ,0,"@!"})

        aAdd(aSeekP3, {"Codigo",   {{"","N",4 ,0,"IDCOR" , "@E 9999"}}})
        aAdd(aSeekP3, {"Descricao",{{"","C",30,0,"DESCRI" ,"@!"}}})
        aAdd(aSeekP3, {"PRODOC",   {{"","C",30,0,"PRODOC" ,"@!"}}})

    //Tabela temporária PRODOC

        oTempTablC:= FWTemporaryTable():New()                        //Cria a temporária
        oTempTablC:SetFields(aFieldsPro)                            //Cria os campos na tabela    
        oTempTablC:AddIndex("01", {"PRODOC"} )                        //Cria índice com colunas setadas anteriormente    
        oTempTablC:Create()                                         //Efetua a criação da tabela     
        cAliasPro := oTempTablC:GetAlias()                             //Pego o alias da tabela temporária       
        cTablePro := oTempTablC:GetRealName()                         //Pego o nome real da tabela temporária no banco de dados    
        MSGINFO("Pedidos: " + cTablePro)

        cQueryPro := "INSERT INTO " + cTablePro + " (STATUS, PRODOC, PASSO, DESCR, CODCLI, CLI) "        
        cQueryPro += "SELECT ZF0_STATUS, ZF0_PRODOC, ZF0_PASSO, ZF0_DESC, ZF0_CODC, ZF0_CLIN " 
        cQueryPro += "FROM ZF0010 "     
        cQueryPro += "WHERE D_E_L_E_T_ <> '*' "
        //cQueryPro += "GROUP BY C6_PRODUTO " // PARA NÃO TRAZER REPETIDOS        

    TCSqlExec(cQueryPro)         

    //Tabela temporária PRODOC2

        oTempTablC:= FWTemporaryTable():New()                        //Cria a temporária
        oTempTablC:SetFields(aFieldsPr2)                            //Cria os campos na tabela    
        oTempTablC:AddIndex("01", {"PRODOC"} )                        //Cria índice com colunas setadas anteriormente    
        oTempTablC:Create()                                         //Efetua a criação da tabela     
        cAliasPr2 := oTempTablC:GetAlias()                             //Pego o alias da tabela temporária       
        cTablePr2 := oTempTablC:GetRealName()                         //Pego o nome real da tabela temporária no banco de dados    
        MSGINFO("Pedidos: " + cTablePr2)

        cQueryPr2 := "INSERT INTO " + cTablePr2 + " (STATUS, PRODOC, PASSO, DESCR, CODCLI, CLI) "        
        cQueryPr2 += "SELECT ZF0_STATUS, ZF0_PRODOC, ZF0_PASSO, ZF0_DESC, ZF0_CODC, ZF0_CLIN " 
        cQueryPr2 += "FROM ZF0010 "     
        cQueryPr2 += "WHERE D_E_L_E_T_ <> '*' "
        //cQueryPro += "GROUP BY C6_PRODUTO " // PARA NÃO TRAZER REPETIDOS        

    TCSqlExec(cQueryPr2)

    //Tabela temporária CORES

        oTempTablC:= FWTemporaryTable():New()                        //Cria a temporária
        oTempTablC:SetFields(aFieldsP3)                                //Cria os campos na tabela    
        oTempTablC:AddIndex("01", {"IDCOR"} )                        //Cria índice com colunas setadas anteriormente    
        oTempTablC:Create()                                         //Efetua a criação da tabela     
        cAliasPr3 := oTempTablC:GetAlias()                             //Pego o alias da tabela temporária       
        cTablePr3 := oTempTablC:GetRealName()
        MSGINFO("Pedidos: " + cTablePr3)                     //Pego o nome real da tabela temporária no banco de dados    

    // FIM        

        DBSelectArea(cAliasPro)                
        (cAliasPro)->(dbGoTop())

        While !(cAliasPro)->( EOF() )

            nPasso1 := (cAliasPro)->PASSO

            (cAliasPr2)->( dbGoTop() )
            While !(cAliasPr2)->( EOF() )

                cProdoc2    := (cAliasPr2)->PRODOC
                nPasso2     := (cAliasPr2)->PASSO

                IF nPasso1 > nPasso2

                    nResto := MOD(nPasso1,nPasso2)                   

                ELSE

                    nResto := MOD(nPasso2,nPasso1)                    

                ENDIF               

                IF nResto = 0  

                    cQueryPro2 := "UPDATE " + cTablePr2 + " "
                    cQueryPro2 += "SET IDCONJ = " + cValToChar(nNumConj) + " "                    
                    cQueryPro2 += "WHERE  PRODOC = '" + cProdoc2 + "' "         
                    TCSqlExec(cQueryPro2)                  

                    //MsgInfo(' Divisao : '+cValtoChar(nPasso2)+" / "+cValtoChar(nPasso1)+". Sequencia: "+cValtoChar(nNumConj),"Conjugacao")

                ENDIF

            (cAliasPr2)->( dbSkip())
            END

            nNumConj++

            (cAliasPro)->( dbSkip())
        END

    // Atualiza a tabela com os mesmos ID's
    cQueryUP := "UPDATE " + cTablePro + " "
    cQueryUP += "SET " + cTablePro + ".IDCONJ = " + cTablePr2 + ".IDCONJ "
    cQueryUP += "FROM " + cTablePr2 + " "
    cQueryUP += "WHERE  " + cTablePro + ".PRODOC = " + cTablePr2 + ".PRODOC "

    TCSqlExec(cQueryUP)        

    Define MsDialog oDlgPrinc Title 'Conjugacao' From aCoors[1], aCoors[2] To aCoors[3], aCoors[4] Pixel style nOR( WS_VISIBLE, WS_POPUP )

    //1.1 Cria o conteiner onde serão colocados os browses
    oFWLayer := FWLayer():New()
    oFWLayer:Init( oDlgPrinc, .F., .T. )    

    // Define Painel Superior
    oFWLayer:AddLine( 'UP', 40, .F. )                         // Cria uma "linha" com 40% da tela
    oFWLayer:AddCollumn( 'ALL', 100, .T., 'UP' )             // Na "linha" criada eu crio uma coluna com 100% da tamanho dela
    oPanelUp := oFWLayer:GetColPanel( 'ALL', 'UP' )     // Pego o objeto desse pedaço do container                          

    oFWLayer:AddLine( 'CENTER', 60, .F. )                    
    oFWLayer:AddCollumn( 'LEFT2' , 50, .T., 'CENTER' )     
    oPanelLeft := oFWLayer:GetColPanel( 'LEFT2' , 'CENTER' )

    oFWLayer:AddCollumn( 'LEFT3' , 50, .T., 'CENTER' )     
    oPanelRight := oFWLayer:GetColPanel( 'LEFT3' , 'CENTER' )

    // 1. FWmBrowse PRODOC 
    oBrowseUP:= FWmBrowse():New()    
    oBrowseUP:SetAttach( .T. ) 
    oBrowseUP:SetOwner( oPanelUp )                             
    oBrowseUP:SetDescription( "PRODOC" )
    oBrowseUP:SetDBFFilter(.T.)    
    oBrowseUP:SetUseFilter(.T.)
    oBrowseUP:SetFixedBrowse(.T.)
    oBrowseUP:SetWalkThru(.F.)
    oBrowseUP:SetAmbiente(.T.)    
    oBrowseUP:SetAlias( cAliasPro )    
    oBrowseUP:SetMenuDef( ' ' )
    oBrowseUP:SetTemporary(.T.)
    oBrowseUP:SetFields(aColunaPro)
    oBrowseUP:SetSeek(.T.,aSeekPro)
    oBrowseUP:SetProfileID( '1' )
    oBrowseUp:AddLegend( "STATUS=='1'" , "YELLOW", "Em Tramite" )
    oBrowseUp:AddLegend( "STATUS=='2'" , "GREEN", "Aprovado" )
    oBrowseUp:AddLegend( "STATUS=='3'" , "GRAY", "Nova Versao" )
    oBrowseUp:AddLegend( "STATUS=='4'" , "BLACK", "Inativo" )        
    oBrowseUP:DisableDetails()    
    oBrowseUP:ForceQuitButton()    
    oBrowseUP:Activate()
    oBrowseUP:At()   

    oBrowseLeft:= FWMarkBrowse():New()    
    oBrowseLeft:SetOwner( oPanelLeft )                             
    oBrowseLeft:SetDescription( "Conjugacoes Possiveis" )
    oBrowseLeft:SetDBFFilter(.T.)
    oBrowseLeft:SetUseFilter(.T.) //Habilita a utilização do filtro no Browse
    oBrowseLeft:SetFixedBrowse(.T.)
    oBrowseLeft:SetWalkThru(.F.) //Habilita a utilização da funcionalidade Walk-Thru no Browse
    oBrowseLeft:SetAmbiente(.T.)        
    oBrowseLeft:SetAlias( cAliasPr2 )
    oBrowseLeft:SetMenuDef( 'ZF0CAD_M' )
    oBrowseLeft:SetTemporary(.T.)    
    oBrowseLeft:SetFields(aColunaPr2)
    oBrowseLeft:SetSeek(.T.,aSeekPr2)
    //oBrowseDown:SetFieldFilter(aFieFilter)
    oBrowseLeft:SetProfileID( '2' )                
    oBrowseLeft:SetFieldMark( 'OK' )
    oBrowseLeft:AddLegend( "STATUS=='1'" , "YELLOW", "Em Tramite" )
    oBrowseLeft:AddLegend( "STATUS=='2'" , "GREEN", "Aprovado" )
    oBrowseLeft:AddLegend( "STATUS=='3'" , "GRAY", "Nova Versao" )
    oBrowseLeft:AddLegend( "STATUS=='4'" , "BLACK", "Inativo" )    
    oBrowseLeft:DisableDetails()    
    oBrowseLeft:ForceQuitButton()    
    oBrowseLeft:Activate()        
    oBrowseLeft:At()

    oBrowseRight:= FWMarkBrowse():New()
    oBrowseRight:SetOwner( oPanelRight )
    oBrowseRight:SetDescription( "Cores Conjugadas" )
    oBrowseRight:SetDBFFilter(.T.)
    oBrowseRight:SetUseFilter(.T.) //Habilita a utilização do filtro no Browse
    oBrowseRight:SetFixedBrowse(.T.)
    oBrowseRight:SetWalkThru(.F.) //Habilita a utilização da funcionalidade Walk-Thru no Browse
    oBrowseRight:SetAmbiente(.T.)        
    oBrowseRight:SetAlias( cAliasPr3 )
    oBrowseRight:SetMenuDef( ' ' )
    oBrowseRight:SetTemporary(.T.)    
    oBrowseRight:SetFields(aColunaP3)
    //oBrowseRight:SetSeek(.T.,aSeekP3)
    oBrowseRight:SetProfileID( '3' )                
    oBrowseRight:SetFieldMark( 'OK' )    
    oBrowseRight:DisableDetails()    
    oBrowseRight:ForceQuitButton()    
    oBrowseRight:Activate()        
    //oBrowseRight:At()

    //Criando o Relacionamento dos Browsers
    oRelacZA4:= FWBrwRelation():New()
    oRelacZA4:AddRelation( oBrowseUp , oBrowseLeft , { { 'IDCONJ' , 'IDCONJ' } } )
    oRelacZA4:Activate()

    oRelacZA5:= FWBrwRelation():New()
    oRelacZA5:AddRelation( oBrowseLeft , oBrowseRight , { { 'IDCONJ' , 'IDCONJ' } } )
    oRelacZA5:Activate()    

    Activate MsDialog oDlgPrinc Center

RETURN

//Adicionar Prodoc na lista - Botão PROCESSAR
User Function AAPRODOC()

    Local oModel    := FWModelActive()   
    Local cMarca     := oMark:Mark()    
    Local oGridZFF  := oModel:GetModel('ZFFFILHO')
    Local nCt         := 0
    Local nCtF         := 0  
    Local nLi       := 0
    Local nMaZFF
    Local cProdoc
    Local nPasso
    Local cVaria
    Local cLinha
    Local cDesc
    Local lDup
    Local lFecha
    Local aConj     := {}


    // Conta PRODOC's marcados
    (cAliasPr2)->( dbGoTop() )
    While !(cAliasPr2)->( EOF() )
        If oMark:IsMark(cMarca)
            nCt++
        EndIf
        (cAliasPr2)->( dbSkip())
    END

    // Ler PRODOC selecionado e incluir na ficha
    (cAliasPr2)->( dbGoTop() )
    While !(cAliasPr2)->( EOF() )

        If oMark:IsMark(cMarca) 

            cLinhas := oGridZFF:GetValue('ZFF_PRODOC')

            IF VAZIO(cLinha)

                cProdoc := (cAliasPr2)->PRODOC
                lDup    := .F.

                nPasso:= Posicione("ZF0",1,xFilial('ZF0')+cProdoc,'ZF0_PASSO')
                cVaria:= Posicione("ZF0",1,xFilial('ZF0')+cProdoc,'ZF0_VARIA')
                cDesc := Posicione("ZF0",1,xFilial('ZF0')+cProdoc,'ZF0_DESC')

                oGridZFF:LoadValue('ZFF_PRODOC', cProdoc )
                oGridZFF:LoadValue('ZFF_PASSO',  nPasso )
                oGridZFF:LoadValue('ZFF_VARIA',  cVaria )
                oGridZFF:LoadValue('ZFF_DESC',   cDesc )

                nCtF++

                MSGINFO("Marcadas: "+cValToChar(nCt)+" . Lançando: "+cValToChar(nCtF))

                IF nCtF < nCt

                    oGridZFF:AddLine()

                ENDIF

            ENDIF

        ENDIF       

        (cAliasPr2)->( dbSkip())    

    End  

    oDlgPrinc:End()  

Return NIL

//Função do Botão

User Function CONJCOR()

    Local cMarca     := oMark:Mark()
    Local cQueryC1, cQueryC2, cQueryC3, cQueryC4, cQueryC5, cQueryC6, cQueryC7, cQueryC8, cQueryC9, cQueryC10 
    Local cQueryLim := "DELETE FROM " + cTablePr3
    Local nCor1     := 0 
    Local nCor2     := 0
    Local nCor3     := 0 
    Local nCor4     := 0 
    Local nCor5     := 0 
    Local nCor6     := 0 
    Local nCor7     := 0 
    Local nCor8     := 0 
    Local nCor9     := 0 
    Local nCor10    := 0
    Local nCodCor   := 0    
    Local lCorDup1, lCorDup2, lCorDup3, lCorDup4, lCorDup5, lCorDup6, lCorDup7, lCorDup8, lCorDup9, lCorDup10 
    Local cProdocTMP  := " "
    Local cProdoc
    Local nIdCor
    TCSqlExec(cQueryLim)        

   (cAliasPr2)->( dbGoTop() )
    While !(cAliasPr2)->( EOF() )

        If oMark:IsMark(cMarca)

            lCorDup1  := .F.
            lCorDup2  := .F.
            lCorDup3  := .F.
            lCorDup4  := .F.
            lCorDup5  := .F.
            lCorDup6  := .F.
            lCorDup7  := .F.
            lCorDup8  := .F.
            lCorDup9  := .F.
            lCorDup10 := .F.

            cProdoc := ALLTRIM((cAliasPr2)->PRODOC)
            nIdCor  := (cAliasPr2)->IDCONJ            
            nCor1   := Posicione("ZF0", 1, xFilial("ZF0")+cProdoc,"ZF0_CCOR1")
            nCor2   := Posicione("ZF0", 1, xFilial("ZF0")+cProdoc,"ZF0_CCOR2")
            nCor3   := Posicione("ZF0", 1, xFilial("ZF0")+cProdoc,"ZF0_CCOR3")
            nCor4   := Posicione("ZF0", 1, xFilial("ZF0")+cProdoc,"ZF0_CCOR4")
            nCor5   := Posicione("ZF0", 1, xFilial("ZF0")+cProdoc,"ZF0_CCOR5")
            nCor6   := Posicione("ZF0", 1, xFilial("ZF0")+cProdoc,"ZF0_CCOR6")
            nCor7   := Posicione("ZF0", 1, xFilial("ZF0")+cProdoc,"ZF0_CCOR7")
            nCor8   := Posicione("ZF0", 1, xFilial("ZF0")+cProdoc,"ZF0_CCOR8")
            nCor9   := Posicione("ZF0", 1, xFilial("ZF0")+cProdoc,"ZF0_CCOR9")
            nCor10  := Posicione("ZF0", 1, xFilial("ZF0")+cProdoc,"ZF0_CCOR10")            

            // Código para lançamento da COR 1          
            IF nCor1 <> 0    
                (cAliasPr3)->( dbGoTop() )
                While !(cAliasPr3)->( EOF() )

                    nCodCor := (cAliasPr3)->IDCOR

                    IF nCor1 == nCodCor
                        lCorDup1 := .T.
                    ENDIF

                    (cAliasPr3)->( dbSkip())
                End

                IF  lCorDup1 == .F.

                    cQueryC1    := "INSERT INTO " + cTablePr3 + " (PRODOC, IDCOR) " 
                    cQueryC1    += "VALUES ( '"+cProdoc+"', "+cValtoChar(nCor1)+" ) " 
                    TCSqlExec(cQueryC1)

                ELSE
                    IF lCorDup1 == .T.                   

                    cQueryC1    := "UPDATE " + cTablePr3 + " "
                    cQueryC1    += "SET PRODOC = CONCAT ('"+ cProdoc +"', ', ', (SELECT PRODOC FROM " + cTablePr3 + " WHERE IDCOR = " + cValtoChar(nCor1) + ") ) "
                    cQueryC1    += "WHERE IDCOR = " + cValtoChar(nCor1) + " "
                    TCSqlExec(cQueryC1)

                    ENDIF                    
                ENDIF            
            ENDIF
            //FIM DA COR 1

            // Código para lançamento da COR 2
            IF nCor2 <> 0    
                (cAliasPr3)->( dbGoTop() )
                While !(cAliasPr3)->( EOF() )

                    nCodCor := (cAliasPr3)->IDCOR

                    IF nCor2 == nCodCor
                        lCorDup2 := .T.
                    ENDIF

                    (cAliasPr3)->( dbSkip())
                End

                IF  lCorDup2 == .F.

                    cQueryC2    := "INSERT INTO " + cTablePr3 + " (PRODOC, IDCOR) " 
                    cQueryC2    += "VALUES ( '"+cProdoc+"', "+cValtoChar(nCor2)+" ) " 
                    TCSqlExec(cQueryC2)

                ELSE
                    IF lCorDup2 == .T.                   

                    cQueryC2    := "UPDATE " + cTablePr3 + " "
                    cQueryC2    += "SET PRODOC = CONCAT ('"+ cProdoc +"', ', ', (SELECT PRODOC FROM " + cTablePr3 + " WHERE IDCOR = " + cValtoChar(nCor2) + ") ) "
                    cQueryC2    += "WHERE IDCOR = " + cValtoChar(nCor2) + " "
                    TCSqlExec(cQueryC2)

                    ENDIF                    
                ENDIF                
            ENDIF
            //FIM DA COR 2

            // Código para lançamento da COR 3
            IF nCor3 <> 0   
                (cAliasPr3)->( dbGoTop() )
                While !(cAliasPr3)->( EOF() )

                    nCodCor := (cAliasPr3)->IDCOR

                    IF nCor3 == nCodCor
                        lCorDup3 := .T.
                    ENDIF

                    (cAliasPr3)->( dbSkip())
                End

                IF  lCorDup3 == .F.

                    cQueryC3    := "INSERT INTO " + cTablePr3 + " (PRODOC, IDCOR) " 
                    cQueryC3    += "VALUES ( '"+cProdoc+"', "+cValtoChar(nCor3)+" ) " 
                    TCSqlExec(cQueryC3)

                ELSE
                    IF lCorDup3 == .T.                   

                    cQueryC3    := "UPDATE " + cTablePr3 + " "
                    cQueryC3    += "SET PRODOC = CONCAT ('"+ cProdoc +"', ', ', (SELECT PRODOC FROM " + cTablePr3 + " WHERE IDCOR = " + cValtoChar(nCor3) + ") ) "
                    cQueryC3    += "WHERE IDCOR = " + cValtoChar(nCor3) + " "
                    TCSqlExec(cQueryC3)

                    ENDIF                    
                ENDIF                
            ENDIF
            //FIM DA COR 3

            // Código para lançamento da COR 4
            IF nCor4 <> 0    
                (cAliasPr3)->( dbGoTop() )
                While !(cAliasPr3)->( EOF() )

                    nCodCor := (cAliasPr3)->IDCOR

                    IF nCor4 == nCodCor
                        lCorDup4 := .T.
                    ENDIF

                    (cAliasPr3)->( dbSkip())
                End

                IF  lCorDup4 == .F.

                    cQueryC4    := "INSERT INTO " + cTablePr3 + " (PRODOC, IDCOR) " 
                    cQueryC4    += "VALUES ( '"+cProdoc+"', "+cValtoChar(nCor4)+" ) " 
                    TCSqlExec(cQueryC4)

                ELSE
                    IF lCorDup4 == .T.                   

                    cQueryC4    := "UPDATE " + cTablePr3 + " "
                    cQueryC4    += "SET PRODOC = CONCAT ('"+ cProdoc +"', ', ', (SELECT PRODOC FROM " + cTablePr3 + " WHERE IDCOR = " + cValtoChar(nCor4) + ") ) "
                    cQueryC4    += "WHERE IDCOR = " + cValtoChar(nCor4) + " "
                    TCSqlExec(cQueryC4)

                    ENDIF                    
                ENDIF                
            ENDIF
            //FIM DA COR 4

            // Código para lançamento da COR 5
            IF nCor5 <> 0    
                (cAliasPr3)->( dbGoTop() )
                While !(cAliasPr3)->( EOF() )

                    nCodCor := (cAliasPr3)->IDCOR

                    IF nCor5 == nCodCor
                        lCorDup5 := .T.
                    ENDIF

                    (cAliasPr3)->( dbSkip())
                End

                IF  lCorDup5 == .F.

                    cQueryC5    := "INSERT INTO " + cTablePr3 + " (PRODOC, IDCOR) " 
                    cQueryC5    += "VALUES ( '"+cProdoc+"', "+cValtoChar(nCor5)+" ) " 
                    TCSqlExec(cQueryC5)

                ELSE
                    IF lCorDup5 == .T.                   

                    cQueryC5    := "UPDATE " + cTablePr3 + " "
                    cQueryC5    += "SET PRODOC = CONCAT ('"+ cProdoc +"', ', ', (SELECT PRODOC FROM " + cTablePr3 + " WHERE IDCOR = " + cValtoChar(nCor5) + ") ) "
                    cQueryC5    += "WHERE IDCOR = " + cValtoChar(nCor5) + " "
                    TCSqlExec(cQueryC5)

                    ENDIF                    
                ENDIF              
            ENDIF
            //FIM DA COR 5

            // Código para lançamento da COR 6
            IF nCor6 <> 0    
                (cAliasPr3)->( dbGoTop() )
                While !(cAliasPr3)->( EOF() )

                    nCodCor := (cAliasPr3)->IDCOR

                    IF nCor6 == nCodCor
                        lCorDup6 := .T.
                    ENDIF

                    (cAliasPr3)->( dbSkip())
                End

                IF  lCorDup6 == .F.

                    cQueryC6    := "INSERT INTO " + cTablePr3 + " (PRODOC, IDCOR) " 
                    cQueryC6    += "VALUES ( '"+cProdoc+"', "+cValtoChar(nCor6)+" ) " 
                    TCSqlExec(cQueryC6)

                ELSE
                    IF lCorDup6 == .T.                   

                    cQueryC6    := "UPDATE " + cTablePr3 + " "
                    cQueryC6    += "SET PRODOC = CONCAT ('"+ cProdoc +"', ', ', (SELECT PRODOC FROM " + cTablePr3 + " WHERE IDCOR = " + cValtoChar(nCor6) + ") ) "
                    cQueryC6    += "WHERE IDCOR = " + cValtoChar(nCor6) + " "
                    TCSqlExec(cQueryC6)

                    ENDIF                    
                ENDIF                
            ENDIF
            //FIM DA COR 6

            // Código para lançamento da COR 7
            IF nCor7 <> 0   
                (cAliasPr3)->( dbGoTop() )
                While !(cAliasPr3)->( EOF() )

                    nCodCor := (cAliasPr3)->IDCOR

                    IF nCor7 == nCodCor
                        lCorDup7 := .T.
                    ENDIF

                    (cAliasPr3)->( dbSkip())
                End

                IF  lCorDup7 == .F.

                    cQueryC7    := "INSERT INTO " + cTablePr3 + " (PRODOC, IDCOR) " 
                    cQueryC7    += "VALUES ( '"+cProdoc+"', "+cValtoChar(nCor7)+" ) " 
                    TCSqlExec(cQueryC7)

                ELSE
                    IF lCorDup7 == .T.                   

                    cQueryC7    := "UPDATE " + cTablePr3 + " "
                    cQueryC7    += "SET PRODOC = CONCAT ('"+ cProdoc +"', ', ', (SELECT PRODOC FROM " + cTablePr3 + " WHERE IDCOR = " + cValtoChar(nCor7) + ") ) "
                    cQueryC7    += "WHERE IDCOR = " + cValtoChar(nCor7) + " "
                    TCSqlExec(cQueryC7)

                    ENDIF                    
                ENDIF                
            ENDIF
            //FIM DA COR 7

            // Código para lançamento da COR 8
            IF nCor8 <> 0
                (cAliasPr3)->( dbGoTop() )
                While !(cAliasPr3)->( EOF() )

                    nCodCor := (cAliasPr3)->IDCOR

                    IF nCor8 == nCodCor
                        lCorDup8 := .T.
                    ENDIF

                    (cAliasPr3)->( dbSkip())
                End

                IF  lCorDup8 == .F.

                    cQueryC8    := "INSERT INTO " + cTablePr3 + " (PRODOC, IDCOR) " 
                    cQueryC8    += "VALUES ( '"+cProdoc+"', "+cValtoChar(nCor8)+" ) " 
                    TCSqlExec(cQueryC8)

                ELSE
                    IF lCorDup8 == .T.                   

                    cQueryC8    := "UPDATE " + cTablePr3 + " "
                    cQueryC8    += "SET PRODOC = CONCAT ('"+ cProdoc +"', ', ', (SELECT PRODOC FROM " + cTablePr3 + " WHERE IDCOR = " + cValtoChar(nCor8) + ") ) "
                    cQueryC8    += "WHERE IDCOR = " + cValtoChar(nCor8) + " "
                    TCSqlExec(cQueryC8)

                    ENDIF                    
                ENDIF
            ENDIF
            //FIM DA COR 8

            // Código para lançamento da COR 9
            IF nCor9 <> 0
                (cAliasPr3)->( dbGoTop() )
                While !(cAliasPr3)->( EOF() )

                    nCodCor := (cAliasPr3)->IDCOR

                    IF nCor9 == nCodCor
                        lCorDup9 := .T.
                    ENDIF

                    (cAliasPr3)->( dbSkip())
                End

                IF  lCorDup9 == .F.

                    cQueryC9    := "INSERT INTO " + cTablePr3 + " (PRODOC, IDCOR) " 
                    cQueryC9    += "VALUES ( '"+cProdoc+"', "+cValtoChar(nCor9)+" ) " 
                    TCSqlExec(cQueryC9)

                ELSE
                    IF lCorDup9 == .T.                   

                    cQueryC9    := "UPDATE " + cTablePr3 + " "
                    cQueryC9    += "SET PRODOC = CONCAT ('"+ cProdoc +"', ', ', (SELECT PRODOC FROM " + cTablePr3 + " WHERE IDCOR = " + cValtoChar(nCor9) + ") ) "
                    cQueryC9    += "WHERE IDCOR = " + cValtoChar(nCor9) + " "
                    TCSqlExec(cQueryC9)

                    ENDIF                    
                ENDIF
            ENDIF
            //FIM DA COR 9

            // Código para lançamento da COR 10
            IF nCor10 <> 0
                (cAliasPr3)->( dbGoTop() )
                While !(cAliasPr3)->( EOF() )

                    nCodCor := (cAliasPr3)->IDCOR

                    IF nCor10 == nCodCor
                        lCorDup10 := .T.
                    ENDIF

                    (cAliasPr3)->( dbSkip())
                End

                IF  lCorDup10 == .F.

                    cQueryC10    := "INSERT INTO " + cTablePr3 + " (PRODOC, IDCOR) " 
                    cQueryC10    += "VALUES ( '"+cProdoc+"', "+cValtoChar(nCor10)+" ) " 
                    TCSqlExec(cQueryC10)

                ELSE
                    IF lCorDup10 == .T.                   

                    cQueryC10    := "UPDATE " + cTablePr3 + " "
                    cQueryC10    += "SET PRODOC = CONCAT ('"+ cProdoc +"', ', ', (SELECT PRODOC FROM " + cTablePr3 + " WHERE IDCOR = " + cValtoChar(nCor10) + ") ) "
                    cQueryC10    += "WHERE IDCOR = " + cValtoChar(nCor10) + " "
                    TCSqlExec(cQueryC10)

                    ENDIF                    
                ENDIF
            ENDIF
            //FIM DA COR 10

        ENDIF       

        (cAliasPr2)->( dbSkip())

    End

    // ATUALIZA A DESCRICAO DAS CORES
    cQueryCor := "UPDATE " + cTablePr3 + " "
    cQueryCor += "SET " + cTablePr3 + ".DESCRI = ZFH010.ZFH_DESC, " + cTablePr3 + ".IDCONJ = "+cValToChar(nIdCor)+" "      
    cQueryCor += "FROM ZFH010 "
    cQueryCor += "WHERE  " + cTablePr3 + ".IDCOR = ZFH010.ZFH_COD "

    TCSqlExec(cQueryCor)        

    //oBrowseRight:Refresh(.T.)

Return NIL

Muito obrigado. Grande abraço.

Versões (4):

Ver a versão formatada

Erro no Browse com FWMarkBrowse MVC com tabela temporária

Comentário

new question