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.