Perguntas Erro na qry
- CLAUDIOADVPL
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 49
- Obrigados Recebidos: 0
8 anos 5 meses atrás #30751
por CLAUDIOADVPL
Erro na qry foi criado por CLAUDIOADVPL
Bom dia Pessoal,
estou montando um relatório customizado da ordem de produção, e depois de fazer uma alteração na qry começou a dar o erro abaixo:
THREAD ERROR (administrador, SERVIDOR) 15/06/2016 17:43:20
type mismatch on + on XCABEC(RPCPAF01.PRW) 15/06/2016 17:42:46 line : 188
eu sei que a linha que esta dando pau é essa porque antes chegava a aparecer o relatório e depois que alterei parou de funcionar... alguém poderia me ajudar na qry (não manjo de qry)
segue linha:
_cQry += " LEFT JOIN " + RetSqlName("SD1") + " SD1" + " ON SUBSTRING(SC2.C2_OBS,4,9) = SD1.D1_DOC " + CRLF
desde já agradeço.
estou montando um relatório customizado da ordem de produção, e depois de fazer uma alteração na qry começou a dar o erro abaixo:
THREAD ERROR (administrador, SERVIDOR) 15/06/2016 17:43:20
type mismatch on + on XCABEC(RPCPAF01.PRW) 15/06/2016 17:42:46 line : 188
eu sei que a linha que esta dando pau é essa porque antes chegava a aparecer o relatório e depois que alterei parou de funcionar... alguém poderia me ajudar na qry (não manjo de qry)
segue linha:
_cQry += " LEFT JOIN " + RetSqlName("SD1") + " SD1" + " ON SUBSTRING(SC2.C2_OBS,4,9) = SD1.D1_DOC " + CRLF
desde já agradeço.
Por favor Acessar ou Registrar para participar da conversa.
- will
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 81
- Obrigados Recebidos: 0
8 anos 5 meses atrás #30753
por will
Respondido por will no tópico Erro na qry
Boa Tarde!
Poderia colocar o SQl completo aqui por favor para tentar te ajudar?
E como estava antes de você mexer?
O que eu faço para testar, é o seguinte eu pego via debug o que esta na variavel _cQry e jogo no SQL e rodo lá, geralmente o SQl dá o erro que esta acontecendo.
Poderia colocar o SQl completo aqui por favor para tentar te ajudar?
E como estava antes de você mexer?
O que eu faço para testar, é o seguinte eu pego via debug o que esta na variavel _cQry e jogo no SQL e rodo lá, geralmente o SQl dá o erro que esta acontecendo.
Por favor Acessar ou Registrar para participar da conversa.
- CLAUDIOADVPL
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 49
- Obrigados Recebidos: 0
8 anos 5 meses atrás #30758
por CLAUDIOADVPL
Respondido por CLAUDIOADVPL no tópico Erro na qry
Boa tarde Willian,
a qry mudada é essa:
//PESQUISA DADOS CABEÇALHO
_cAlias := "cQuerySC2"
_cQry := " SELECT " + CRLF
_cQry += " C2_NUM AS OP, " + CRLF
_cQry += " C2_ITEM AS ITEM, " + CRLF
_cQry += " C2_SEQUEN AS SEQUENCIA, " + CRLF
_cQry += " C2_X_CODCL AS CODCLIENTE, " + CRLF
_cQry += " C2_X_LJCLI AS LJCLIENTE, " + CRLF
_cQry += " ISNULL(A1_NREDUZ,'') AS RAZAOSOCIAL, " + CRLF
_cQry += " C2_PRODUTO AS CODPROD, " + CRLF
_cQry += " B1_DESC AS DESCPROD, " + CRLF
_cQry += " C2_QUANT AS QUANT, " + CRLF
_cQry += " C2_UM AS UNIDADE, " + CRLF
_cQry += " C2_STATUS AS STATU, " + CRLF
_cQry += " C2_EMISSAO AS EMISSAO, " + CRLF
_cQry += " C2_DATPRI AS DTINICIAL, " + CRLF
_cQry += " C2_DATPRF AS DTFINAL, " + CRLF
_cQry += " C2_OBS AS OBSERV, " + CRLF
_cQry += " D1_QTSEGUM AS SEGUM, " + CRLF
_cQry += " B1_X_AREA AS AREA, " + CRLF
_cQry += " B1_X_PCCRG AS PCCARGA, " + CRLF
_cQry += " B1_X_TMPCG AS TEMPCARGA " + CRLF
_cQry += " FROM " + RetSqlName("SC2") + " SC2" + CRLF
_cQry += " LEFT JOIN " + RetSqlName("SA1") + " SA1" + " ON SC2.C2_X_CODCL = SA1.A1_COD AND SC2.C2_X_LJCLI = SA1.A1_LOJA " + CRLF //usei left porque usando inner - é obrigado que existam o registro nas tabelas.
_cQry += " LEFT JOIN " + RetSqlName("SD1") + " SD1" + " ON SUBSTRING(SC2.C2_OBS,4,9) = SD1.D1_DOC " + CRLF
_cQry += " INNER JOIN " + RetSqlName("SB1") + " SB1" + " ON SC2.C2_PRODUTO = SB1.B1_COD " + CRLF
_cQry += " WHERE SC2.C2_FILIAL = '" + xFilial ("SC2") + "' " + CRLF
_cQry += " AND SC2.D_E_L_E_T_ = ' ' " + CRLF
_cQry += " ORDER BY SC2.C2_NUM,SC2.C2_ITEM,SC2.C2_SEQUEN " +CRLF //ordenando por n°da OP, item e sequencia.
_cQry := ChangeQuery(_cQry)
dbUseArea(.T.,"TOPCONN",TcGenQry(,,_cQry),_cAlias,.T.,.T.)
// Abre opcoes para o usuario ou SetLandscape()
oPrint:SetUp()
oPrint:SetPortrait()
// PAPEL A4
oPrint:setPaperSize(9)
//Inicia uma nova página
//oPrint:StartPage()
dbSelectArea("cQuerySC2")
cQuerySC2->(dbGoTop())
//Controle de Pagina
While cQuerySC2->(!EOF())
////If lFlag
nLin := 0
nTotal:= 0
cFrete:= ''
lFlag1:= .f.
//Cabeçalho
oPrint:StartPage()
xCabec()
//Rodapé
xRodape()
oPrint:EndPage()
cQuerySC2->(dbSkip())
EndDo
//finaliza a pagina
oPrint:EndPage()
oPrint:Preview()
oPrint:End()
cQuerySC2->(dbCloseArea())
//RestArea(_aArea)
Return
/*
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ºPrograma ³XCABEC ºAutor Claudio º Data ³ 26/05/2016 º±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ºDesc. ³Imprime o Cabecalho. º±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
*/
static function xCabec()
Local nLimp := 0
Local dataRos :=date()
cLogoD := GetSrvProfString("Startpath","") + "LGRLREL" + cEmpAnt + ".BMP"
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Titulo do Relatorio dados ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
oPrint:Say(050,800,OEMTOANSI('Relação de Ordens de Producao'),oFont16n,,CLR_BLUE)
oPrint:SayBitmap(050,050,cLogoD,390,150)
oPrint:Say(050,1900,OEMTOANSI('Data: ')+ Transform(dataRos,"@E 99/99/9999"),oFont12n,,CLR_BLUE) //data na parte superior igual a data do rodapé
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//Informacoes da ordem de produção (cabeçalho)
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
oPrint:Say(340,100,OEMTOANSI('Número da Ordem de Produção: ')+cQuerySC2->(OP),oFont12)
oPrint:Say(340,1200,OEMTOANSI('Item: ')+cQuerySC2->(ITEM),oFont12)
oPrint:Say(340,1900,OEMTOANSI('Sequência: ')+cQuerySC2->(SEQUENCIA),oFont12)
oPrint:Say(390,100,OEMTOANSI('Código do Cliente: ')+cQuerySC2->(CODCLIENTE),oFont12)
oPrint:Say(390,1200,OEMTOANSI('Loja: ')+cQuerySC2->(LJCLIENTE),oFont12)
oPrint:Say(440,100,OEMTOANSI('Razão Social do Cliente: ')+cQuerySC2->(RAZAOSOCIAL),oFont12)
oPrint:Say(490,100,OEMTOANSI('Código do Produto Anodizado: ')+cQuerySC2->(CODPROD),oFont12)
oPrint:Say(540,100,OEMTOANSI('Descrição do Produto Anodizado: ')+cQuerySC2->(DESCPROD),oFont12)
oPrint:Say(590,100,OEMTOANSI('Quantidade: ')+cvaltochar(cQuerySC2->(QUANT)),oFont12)
oPrint:Say(590,1200,OEMTOANSI('Unidade: ')+cQuerySC2->(UNIDADE),oFont12)
oPrint:Say(590,1900,OEMTOANSI('Status: ')+cQuerySC2->(STATU),oFont12)
oPrint:Say(640,100,OEMTOANSI('Data de Emissão: ')+Transform(STOD(cQuerySC2->(EMISSAO)),"@E 99/99/9999"),oFont12)
oPrint:Say(690,100,OEMTOANSI('Data de Previsão de inicio: ')+Transform(STOD(cQuerySC2->(DTINICIAL)),"@E 99/99/9999"),oFont12)
oPrint:Say(690,1200,OEMTOANSI('Data de Previsão de término: ')+transform(STOD(cQuerySC2->(DTFINAL)),"@E 99/99/9999"),oFont12)
oPrint:Say(740,100,OEMTOANSI('Data de Inicio efetivo: '),oFont12)
oPrint:Say(740,1200,OEMTOANSI('Data de Término efetivo: '),oFont12)
oPrint:Say(790,100,OEMTOANSI('Hora de Inicio efetivo: '),oFont12)
oPrint:Say(790,1200,OEMTOANSI('Hora de Fim efetivo: '),oFont12)
oPrint:Say(840,100,OEMTOANSI('Observações: ')+cQuerySC2->(OBSERV),oFont12)
oPrint:Line(910,100,910,2400)
// Insere retângulo preenchido
oBrush1 := TBrush():New( , CLR_YELLOW )
oPrint:FillRect( {940, 100, 1000, 2400}, oBrush1 )
oPrint:Say(950,1000,OEMTOANSI('Detalhes da Ordem de Producao'),oFont12,,CLR_BLACK)
oPrint:Say(1040,100,OEMTOANSI('Código do Produto: ')+cQuerySC2->(CODPROD),oFont10) //ver com vagner
oPrint:Say(1040,1200,OEMTOANSI('Descrição do Produto: ')+cQuerySC2->(DESCPROD),oFont10)
oPrint:Say(1090,100,OEMTOANSI('Quant. na 1° unidade de medida: ')+cQuerySC2->(UNIDADE),oFont10)
oPrint:Say(1140,100,OEMTOANSI('Quant. na 2° unidade de medida: ')+cQuerySC2->(SEGUM),oFont10
oPrint:Say(1190,100,OEMTOANSI('Área do Produto: ')+cvaltochar(cQuerySC2->(AREA)),oFont10)
oPrint:Say(1190,1200,OEMTOANSI('PÇ/CARGA: ')+cvaltochar(cQuerySC2->(PCCARGA)),oFont10)
oPrint:Say(1190,1900,OEMTOANSI('TEMPO/CARGA: ')+cQuerySC2->(TEMPCARGA),oFont10)
a qry anterior era essa: (note que mudei aonde busca cQuerySC2->(SEGUM):
//PESQUISA DADOS CABEÇALHO
_cAlias := "cQuerySC2"
_cQry := " SELECT " + CRLF
_cQry += " C2_NUM AS OP, " + CRLF
_cQry += " C2_ITEM AS ITEM, " + CRLF
_cQry += " C2_SEQUEN AS SEQUENCIA, " + CRLF
_cQry += " C2_X_CODCL AS CODCLIENTE, " + CRLF
_cQry += " C2_X_LJCLI AS LJCLIENTE, " + CRLF
_cQry += " ISNULL(A1_NREDUZ,'') AS RAZAOSOCIAL, " + CRLF
_cQry += " C2_PRODUTO AS CODPROD, " + CRLF
_cQry += " B1_DESC AS DESCPROD, " + CRLF
_cQry += " C2_QUANT AS QUANT, " + CRLF
_cQry += " C2_UM AS UNIDADE, " + CRLF
_cQry += " C2_STATUS AS STATU, " + CRLF
_cQry += " C2_EMISSAO AS EMISSAO, " + CRLF
_cQry += " C2_DATPRI AS DTINICIAL, " + CRLF
_cQry += " C2_DATPRF AS DTFINAL, " + CRLF
_cQry += " C2_OBS AS OBSERV, " + CRLF
_cQry += " B1_SEGUM AS SEGUM, " + CRLF
_cQry += " B1_X_AREA AS AREA, " + CRLF
_cQry += " B1_X_PCCRG AS PCCARGA, " + CRLF
_cQry += " B1_X_TMPCG AS TEMPCARGA " + CRLF
_cQry += " FROM " + RetSqlName("SC2") + " SC2" + CRLF
_cQry += " LEFT JOIN " + RetSqlName("SA1") + " SA1" + " ON SC2.C2_X_CODCL = SA1.A1_COD AND SC2.C2_X_LJCLI = SA1.A1_LOJA " + CRLF //usei left porque usando inner - é obrigado que existam o registro nas tabelas.
_cQry += " INNER JOIN " + RetSqlName("SB1") + " SB1" + " ON SC2.C2_PRODUTO = SB1.B1_COD " + CRLF
_cQry += " WHERE SC2.C2_FILIAL = '" + xFilial ("SC2") + "' " + CRLF
_cQry += " AND SC2.D_E_L_E_T_ = ' ' " + CRLF
_cQry += " ORDER BY SC2.C2_NUM,SC2.C2_ITEM,SC2.C2_SEQUEN " +CRLF //ordenando por n°da OP, item e sequencia.
_cQry := ChangeQuery(_cQry)
dbUseArea(.T.,"TOPCONN",TcGenQry(,,_cQry),_cAlias,.T.,.T.)
// Abre opcoes para o usuario ou SetLandscape()
oPrint:SetUp()
oPrint:SetPortrait()
// PAPEL A4
oPrint:setPaperSize(9)
//Inicia uma nova página
//oPrint:StartPage()
dbSelectArea("cQuerySC2")
cQuerySC2->(dbGoTop())
//Controle de Pagina
While cQuerySC2->(!EOF())
////If lFlag
nLin := 0
nTotal:= 0
cFrete:= ''
lFlag1:= .f.
//Cabeçalho
oPrint:StartPage()
xCabec()
//Rodapé
xRodape()
oPrint:EndPage()
cQuerySC2->(dbSkip())
EndDo
//finaliza a pagina
oPrint:EndPage()
oPrint:Preview()
oPrint:End()
cQuerySC2->(dbCloseArea())
//RestArea(_aArea)
Return
/*
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ºPrograma ³XCABEC ºAutor Claudio º Data ³ 26/05/2016 º±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ºDesc. ³Imprime o Cabecalho. º±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
*/
static function xCabec()
Local nLimp := 0
Local dataRos :=date()
cLogoD := GetSrvProfString("Startpath","") + "LGRLREL" + cEmpAnt + ".BMP"
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Titulo do Relatorio dados ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
oPrint:Say(050,800,OEMTOANSI('Relação de Ordens de Producao'),oFont16n,,CLR_BLUE)
oPrint:SayBitmap(050,050,cLogoD,390,150)
oPrint:Say(050,1900,OEMTOANSI('Data: ')+ Transform(dataRos,"@E 99/99/9999"),oFont12n,,CLR_BLUE) //data na parte superior igual a data do rodapé
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//Informacoes da ordem de produção (cabeçalho)
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
oPrint:Say(340,100,OEMTOANSI('Número da Ordem de Produção: ')+cQuerySC2->(OP),oFont12)
oPrint:Say(340,1200,OEMTOANSI('Item: ')+cQuerySC2->(ITEM),oFont12)
oPrint:Say(340,1900,OEMTOANSI('Sequência: ')+cQuerySC2->(SEQUENCIA),oFont12)
oPrint:Say(390,100,OEMTOANSI('Código do Cliente: ')+cQuerySC2->(CODCLIENTE),oFont12)
oPrint:Say(390,1200,OEMTOANSI('Loja: ')+cQuerySC2->(LJCLIENTE),oFont12)
oPrint:Say(440,100,OEMTOANSI('Razão Social do Cliente: ')+cQuerySC2->(RAZAOSOCIAL),oFont12)
oPrint:Say(490,100,OEMTOANSI('Código do Produto Anodizado: ')+cQuerySC2->(CODPROD),oFont12)
oPrint:Say(540,100,OEMTOANSI('Descrição do Produto Anodizado: ')+cQuerySC2->(DESCPROD),oFont12)
oPrint:Say(590,100,OEMTOANSI('Quantidade: ')+cvaltochar(cQuerySC2->(QUANT)),oFont12)
oPrint:Say(590,1200,OEMTOANSI('Unidade: ')+cQuerySC2->(UNIDADE),oFont12)
oPrint:Say(590,1900,OEMTOANSI('Status: ')+cQuerySC2->(STATU),oFont12)
oPrint:Say(640,100,OEMTOANSI('Data de Emissão: ')+Transform(STOD(cQuerySC2->(EMISSAO)),"@E 99/99/9999"),oFont12)
oPrint:Say(690,100,OEMTOANSI('Data de Previsão de inicio: ')+Transform(STOD(cQuerySC2->(DTINICIAL)),"@E 99/99/9999"),oFont12)
oPrint:Say(690,1200,OEMTOANSI('Data de Previsão de término: ')+transform(STOD(cQuerySC2->(DTFINAL)),"@E 99/99/9999"),oFont12)
oPrint:Say(740,100,OEMTOANSI('Data de Inicio efetivo: '),oFont12)
oPrint:Say(740,1200,OEMTOANSI('Data de Término efetivo: '),oFont12)
oPrint:Say(790,100,OEMTOANSI('Hora de Inicio efetivo: '),oFont12)
oPrint:Say(790,1200,OEMTOANSI('Hora de Fim efetivo: '),oFont12)
oPrint:Say(840,100,OEMTOANSI('Observações: ')+cQuerySC2->(OBSERV),oFont12)
oPrint:Line(910,100,910,2400)
// Insere retângulo preenchido
oBrush1 := TBrush():New( , CLR_YELLOW )
oPrint:FillRect( {940, 100, 1000, 2400}, oBrush1 )
oPrint:Say(950,1000,OEMTOANSI('Detalhes da Ordem de Producao'),oFont12,,CLR_BLACK)
oPrint:Say(1040,100,OEMTOANSI('Código do Produto: ')+cQuerySC2->(CODPROD),oFont10) //ver com vagner
oPrint:Say(1040,1200,OEMTOANSI('Descrição do Produto: ')+cQuerySC2->(DESCPROD),oFont10)
oPrint:Say(1090,100,OEMTOANSI('Quant. na 1° unidade de medida: ')+cQuerySC2->(UNIDADE),oFont10)
oPrint:Say(1140,100,OEMTOANSI('Quant. na 2° unidade de medida: ')+cQuerySC2->(SEGUM),oFont10) //ver com vagner
oPrint:Say(1190,100,OEMTOANSI('Área do Produto: ')+cvaltochar(cQuerySC2->(AREA)),oFont10)
oPrint:Say(1190,1200,OEMTOANSI('PÇ/CARGA: ')+cvaltochar(cQuerySC2->(PCCARGA)),oFont10)
oPrint:Say(1190,1900,OEMTOANSI('TEMPO/CARGA: ')+cQuerySC2->(TEMPCARGA),oFont10)
a qry mudada é essa:
//PESQUISA DADOS CABEÇALHO
_cAlias := "cQuerySC2"
_cQry := " SELECT " + CRLF
_cQry += " C2_NUM AS OP, " + CRLF
_cQry += " C2_ITEM AS ITEM, " + CRLF
_cQry += " C2_SEQUEN AS SEQUENCIA, " + CRLF
_cQry += " C2_X_CODCL AS CODCLIENTE, " + CRLF
_cQry += " C2_X_LJCLI AS LJCLIENTE, " + CRLF
_cQry += " ISNULL(A1_NREDUZ,'') AS RAZAOSOCIAL, " + CRLF
_cQry += " C2_PRODUTO AS CODPROD, " + CRLF
_cQry += " B1_DESC AS DESCPROD, " + CRLF
_cQry += " C2_QUANT AS QUANT, " + CRLF
_cQry += " C2_UM AS UNIDADE, " + CRLF
_cQry += " C2_STATUS AS STATU, " + CRLF
_cQry += " C2_EMISSAO AS EMISSAO, " + CRLF
_cQry += " C2_DATPRI AS DTINICIAL, " + CRLF
_cQry += " C2_DATPRF AS DTFINAL, " + CRLF
_cQry += " C2_OBS AS OBSERV, " + CRLF
_cQry += " D1_QTSEGUM AS SEGUM, " + CRLF
_cQry += " B1_X_AREA AS AREA, " + CRLF
_cQry += " B1_X_PCCRG AS PCCARGA, " + CRLF
_cQry += " B1_X_TMPCG AS TEMPCARGA " + CRLF
_cQry += " FROM " + RetSqlName("SC2") + " SC2" + CRLF
_cQry += " LEFT JOIN " + RetSqlName("SA1") + " SA1" + " ON SC2.C2_X_CODCL = SA1.A1_COD AND SC2.C2_X_LJCLI = SA1.A1_LOJA " + CRLF //usei left porque usando inner - é obrigado que existam o registro nas tabelas.
_cQry += " LEFT JOIN " + RetSqlName("SD1") + " SD1" + " ON SUBSTRING(SC2.C2_OBS,4,9) = SD1.D1_DOC " + CRLF
_cQry += " INNER JOIN " + RetSqlName("SB1") + " SB1" + " ON SC2.C2_PRODUTO = SB1.B1_COD " + CRLF
_cQry += " WHERE SC2.C2_FILIAL = '" + xFilial ("SC2") + "' " + CRLF
_cQry += " AND SC2.D_E_L_E_T_ = ' ' " + CRLF
_cQry += " ORDER BY SC2.C2_NUM,SC2.C2_ITEM,SC2.C2_SEQUEN " +CRLF //ordenando por n°da OP, item e sequencia.
_cQry := ChangeQuery(_cQry)
dbUseArea(.T.,"TOPCONN",TcGenQry(,,_cQry),_cAlias,.T.,.T.)
// Abre opcoes para o usuario ou SetLandscape()
oPrint:SetUp()
oPrint:SetPortrait()
// PAPEL A4
oPrint:setPaperSize(9)
//Inicia uma nova página
//oPrint:StartPage()
dbSelectArea("cQuerySC2")
cQuerySC2->(dbGoTop())
//Controle de Pagina
While cQuerySC2->(!EOF())
////If lFlag
nLin := 0
nTotal:= 0
cFrete:= ''
lFlag1:= .f.
//Cabeçalho
oPrint:StartPage()
xCabec()
//Rodapé
xRodape()
oPrint:EndPage()
cQuerySC2->(dbSkip())
EndDo
//finaliza a pagina
oPrint:EndPage()
oPrint:Preview()
oPrint:End()
cQuerySC2->(dbCloseArea())
//RestArea(_aArea)
Return
/*
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ºPrograma ³XCABEC ºAutor Claudio º Data ³ 26/05/2016 º±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ºDesc. ³Imprime o Cabecalho. º±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
*/
static function xCabec()
Local nLimp := 0
Local dataRos :=date()
cLogoD := GetSrvProfString("Startpath","") + "LGRLREL" + cEmpAnt + ".BMP"
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Titulo do Relatorio dados ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
oPrint:Say(050,800,OEMTOANSI('Relação de Ordens de Producao'),oFont16n,,CLR_BLUE)
oPrint:SayBitmap(050,050,cLogoD,390,150)
oPrint:Say(050,1900,OEMTOANSI('Data: ')+ Transform(dataRos,"@E 99/99/9999"),oFont12n,,CLR_BLUE) //data na parte superior igual a data do rodapé
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//Informacoes da ordem de produção (cabeçalho)
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
oPrint:Say(340,100,OEMTOANSI('Número da Ordem de Produção: ')+cQuerySC2->(OP),oFont12)
oPrint:Say(340,1200,OEMTOANSI('Item: ')+cQuerySC2->(ITEM),oFont12)
oPrint:Say(340,1900,OEMTOANSI('Sequência: ')+cQuerySC2->(SEQUENCIA),oFont12)
oPrint:Say(390,100,OEMTOANSI('Código do Cliente: ')+cQuerySC2->(CODCLIENTE),oFont12)
oPrint:Say(390,1200,OEMTOANSI('Loja: ')+cQuerySC2->(LJCLIENTE),oFont12)
oPrint:Say(440,100,OEMTOANSI('Razão Social do Cliente: ')+cQuerySC2->(RAZAOSOCIAL),oFont12)
oPrint:Say(490,100,OEMTOANSI('Código do Produto Anodizado: ')+cQuerySC2->(CODPROD),oFont12)
oPrint:Say(540,100,OEMTOANSI('Descrição do Produto Anodizado: ')+cQuerySC2->(DESCPROD),oFont12)
oPrint:Say(590,100,OEMTOANSI('Quantidade: ')+cvaltochar(cQuerySC2->(QUANT)),oFont12)
oPrint:Say(590,1200,OEMTOANSI('Unidade: ')+cQuerySC2->(UNIDADE),oFont12)
oPrint:Say(590,1900,OEMTOANSI('Status: ')+cQuerySC2->(STATU),oFont12)
oPrint:Say(640,100,OEMTOANSI('Data de Emissão: ')+Transform(STOD(cQuerySC2->(EMISSAO)),"@E 99/99/9999"),oFont12)
oPrint:Say(690,100,OEMTOANSI('Data de Previsão de inicio: ')+Transform(STOD(cQuerySC2->(DTINICIAL)),"@E 99/99/9999"),oFont12)
oPrint:Say(690,1200,OEMTOANSI('Data de Previsão de término: ')+transform(STOD(cQuerySC2->(DTFINAL)),"@E 99/99/9999"),oFont12)
oPrint:Say(740,100,OEMTOANSI('Data de Inicio efetivo: '),oFont12)
oPrint:Say(740,1200,OEMTOANSI('Data de Término efetivo: '),oFont12)
oPrint:Say(790,100,OEMTOANSI('Hora de Inicio efetivo: '),oFont12)
oPrint:Say(790,1200,OEMTOANSI('Hora de Fim efetivo: '),oFont12)
oPrint:Say(840,100,OEMTOANSI('Observações: ')+cQuerySC2->(OBSERV),oFont12)
oPrint:Line(910,100,910,2400)
// Insere retângulo preenchido
oBrush1 := TBrush():New( , CLR_YELLOW )
oPrint:FillRect( {940, 100, 1000, 2400}, oBrush1 )
oPrint:Say(950,1000,OEMTOANSI('Detalhes da Ordem de Producao'),oFont12,,CLR_BLACK)
oPrint:Say(1040,100,OEMTOANSI('Código do Produto: ')+cQuerySC2->(CODPROD),oFont10) //ver com vagner
oPrint:Say(1040,1200,OEMTOANSI('Descrição do Produto: ')+cQuerySC2->(DESCPROD),oFont10)
oPrint:Say(1090,100,OEMTOANSI('Quant. na 1° unidade de medida: ')+cQuerySC2->(UNIDADE),oFont10)
oPrint:Say(1140,100,OEMTOANSI('Quant. na 2° unidade de medida: ')+cQuerySC2->(SEGUM),oFont10
oPrint:Say(1190,100,OEMTOANSI('Área do Produto: ')+cvaltochar(cQuerySC2->(AREA)),oFont10)
oPrint:Say(1190,1200,OEMTOANSI('PÇ/CARGA: ')+cvaltochar(cQuerySC2->(PCCARGA)),oFont10)
oPrint:Say(1190,1900,OEMTOANSI('TEMPO/CARGA: ')+cQuerySC2->(TEMPCARGA),oFont10)
a qry anterior era essa: (note que mudei aonde busca cQuerySC2->(SEGUM):
//PESQUISA DADOS CABEÇALHO
_cAlias := "cQuerySC2"
_cQry := " SELECT " + CRLF
_cQry += " C2_NUM AS OP, " + CRLF
_cQry += " C2_ITEM AS ITEM, " + CRLF
_cQry += " C2_SEQUEN AS SEQUENCIA, " + CRLF
_cQry += " C2_X_CODCL AS CODCLIENTE, " + CRLF
_cQry += " C2_X_LJCLI AS LJCLIENTE, " + CRLF
_cQry += " ISNULL(A1_NREDUZ,'') AS RAZAOSOCIAL, " + CRLF
_cQry += " C2_PRODUTO AS CODPROD, " + CRLF
_cQry += " B1_DESC AS DESCPROD, " + CRLF
_cQry += " C2_QUANT AS QUANT, " + CRLF
_cQry += " C2_UM AS UNIDADE, " + CRLF
_cQry += " C2_STATUS AS STATU, " + CRLF
_cQry += " C2_EMISSAO AS EMISSAO, " + CRLF
_cQry += " C2_DATPRI AS DTINICIAL, " + CRLF
_cQry += " C2_DATPRF AS DTFINAL, " + CRLF
_cQry += " C2_OBS AS OBSERV, " + CRLF
_cQry += " B1_SEGUM AS SEGUM, " + CRLF
_cQry += " B1_X_AREA AS AREA, " + CRLF
_cQry += " B1_X_PCCRG AS PCCARGA, " + CRLF
_cQry += " B1_X_TMPCG AS TEMPCARGA " + CRLF
_cQry += " FROM " + RetSqlName("SC2") + " SC2" + CRLF
_cQry += " LEFT JOIN " + RetSqlName("SA1") + " SA1" + " ON SC2.C2_X_CODCL = SA1.A1_COD AND SC2.C2_X_LJCLI = SA1.A1_LOJA " + CRLF //usei left porque usando inner - é obrigado que existam o registro nas tabelas.
_cQry += " INNER JOIN " + RetSqlName("SB1") + " SB1" + " ON SC2.C2_PRODUTO = SB1.B1_COD " + CRLF
_cQry += " WHERE SC2.C2_FILIAL = '" + xFilial ("SC2") + "' " + CRLF
_cQry += " AND SC2.D_E_L_E_T_ = ' ' " + CRLF
_cQry += " ORDER BY SC2.C2_NUM,SC2.C2_ITEM,SC2.C2_SEQUEN " +CRLF //ordenando por n°da OP, item e sequencia.
_cQry := ChangeQuery(_cQry)
dbUseArea(.T.,"TOPCONN",TcGenQry(,,_cQry),_cAlias,.T.,.T.)
// Abre opcoes para o usuario ou SetLandscape()
oPrint:SetUp()
oPrint:SetPortrait()
// PAPEL A4
oPrint:setPaperSize(9)
//Inicia uma nova página
//oPrint:StartPage()
dbSelectArea("cQuerySC2")
cQuerySC2->(dbGoTop())
//Controle de Pagina
While cQuerySC2->(!EOF())
////If lFlag
nLin := 0
nTotal:= 0
cFrete:= ''
lFlag1:= .f.
//Cabeçalho
oPrint:StartPage()
xCabec()
//Rodapé
xRodape()
oPrint:EndPage()
cQuerySC2->(dbSkip())
EndDo
//finaliza a pagina
oPrint:EndPage()
oPrint:Preview()
oPrint:End()
cQuerySC2->(dbCloseArea())
//RestArea(_aArea)
Return
/*
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ºPrograma ³XCABEC ºAutor Claudio º Data ³ 26/05/2016 º±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ºDesc. ³Imprime o Cabecalho. º±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
*/
static function xCabec()
Local nLimp := 0
Local dataRos :=date()
cLogoD := GetSrvProfString("Startpath","") + "LGRLREL" + cEmpAnt + ".BMP"
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Titulo do Relatorio dados ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
oPrint:Say(050,800,OEMTOANSI('Relação de Ordens de Producao'),oFont16n,,CLR_BLUE)
oPrint:SayBitmap(050,050,cLogoD,390,150)
oPrint:Say(050,1900,OEMTOANSI('Data: ')+ Transform(dataRos,"@E 99/99/9999"),oFont12n,,CLR_BLUE) //data na parte superior igual a data do rodapé
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//Informacoes da ordem de produção (cabeçalho)
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
oPrint:Say(340,100,OEMTOANSI('Número da Ordem de Produção: ')+cQuerySC2->(OP),oFont12)
oPrint:Say(340,1200,OEMTOANSI('Item: ')+cQuerySC2->(ITEM),oFont12)
oPrint:Say(340,1900,OEMTOANSI('Sequência: ')+cQuerySC2->(SEQUENCIA),oFont12)
oPrint:Say(390,100,OEMTOANSI('Código do Cliente: ')+cQuerySC2->(CODCLIENTE),oFont12)
oPrint:Say(390,1200,OEMTOANSI('Loja: ')+cQuerySC2->(LJCLIENTE),oFont12)
oPrint:Say(440,100,OEMTOANSI('Razão Social do Cliente: ')+cQuerySC2->(RAZAOSOCIAL),oFont12)
oPrint:Say(490,100,OEMTOANSI('Código do Produto Anodizado: ')+cQuerySC2->(CODPROD),oFont12)
oPrint:Say(540,100,OEMTOANSI('Descrição do Produto Anodizado: ')+cQuerySC2->(DESCPROD),oFont12)
oPrint:Say(590,100,OEMTOANSI('Quantidade: ')+cvaltochar(cQuerySC2->(QUANT)),oFont12)
oPrint:Say(590,1200,OEMTOANSI('Unidade: ')+cQuerySC2->(UNIDADE),oFont12)
oPrint:Say(590,1900,OEMTOANSI('Status: ')+cQuerySC2->(STATU),oFont12)
oPrint:Say(640,100,OEMTOANSI('Data de Emissão: ')+Transform(STOD(cQuerySC2->(EMISSAO)),"@E 99/99/9999"),oFont12)
oPrint:Say(690,100,OEMTOANSI('Data de Previsão de inicio: ')+Transform(STOD(cQuerySC2->(DTINICIAL)),"@E 99/99/9999"),oFont12)
oPrint:Say(690,1200,OEMTOANSI('Data de Previsão de término: ')+transform(STOD(cQuerySC2->(DTFINAL)),"@E 99/99/9999"),oFont12)
oPrint:Say(740,100,OEMTOANSI('Data de Inicio efetivo: '),oFont12)
oPrint:Say(740,1200,OEMTOANSI('Data de Término efetivo: '),oFont12)
oPrint:Say(790,100,OEMTOANSI('Hora de Inicio efetivo: '),oFont12)
oPrint:Say(790,1200,OEMTOANSI('Hora de Fim efetivo: '),oFont12)
oPrint:Say(840,100,OEMTOANSI('Observações: ')+cQuerySC2->(OBSERV),oFont12)
oPrint:Line(910,100,910,2400)
// Insere retângulo preenchido
oBrush1 := TBrush():New( , CLR_YELLOW )
oPrint:FillRect( {940, 100, 1000, 2400}, oBrush1 )
oPrint:Say(950,1000,OEMTOANSI('Detalhes da Ordem de Producao'),oFont12,,CLR_BLACK)
oPrint:Say(1040,100,OEMTOANSI('Código do Produto: ')+cQuerySC2->(CODPROD),oFont10) //ver com vagner
oPrint:Say(1040,1200,OEMTOANSI('Descrição do Produto: ')+cQuerySC2->(DESCPROD),oFont10)
oPrint:Say(1090,100,OEMTOANSI('Quant. na 1° unidade de medida: ')+cQuerySC2->(UNIDADE),oFont10)
oPrint:Say(1140,100,OEMTOANSI('Quant. na 2° unidade de medida: ')+cQuerySC2->(SEGUM),oFont10) //ver com vagner
oPrint:Say(1190,100,OEMTOANSI('Área do Produto: ')+cvaltochar(cQuerySC2->(AREA)),oFont10)
oPrint:Say(1190,1200,OEMTOANSI('PÇ/CARGA: ')+cvaltochar(cQuerySC2->(PCCARGA)),oFont10)
oPrint:Say(1190,1900,OEMTOANSI('TEMPO/CARGA: ')+cQuerySC2->(TEMPCARGA),oFont10)
Por favor Acessar ou Registrar para participar da conversa.
- will
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 81
- Obrigados Recebidos: 0
8 anos 5 meses atrás #30761
por will
Respondido por will no tópico Erro na qry
Bom dia!
Vi seu Sql, testei no Sql Studio e funcionou mesmo sem eu ter alguns campos especificos.
Conclui então que o erro não esta no seu SQL, e sim na função depois dela Xcabec, onde tem os seus Oprint da uma debugada ali olha campo a campo, acredito ser algum errro de o caracter é string ta indo data é data ta indo caracter.
Debuga o trecho dos Oprint para ver.
Desculpa não conseguir ajudar com mais certeza.
Vi seu Sql, testei no Sql Studio e funcionou mesmo sem eu ter alguns campos especificos.
Conclui então que o erro não esta no seu SQL, e sim na função depois dela Xcabec, onde tem os seus Oprint da uma debugada ali olha campo a campo, acredito ser algum errro de o caracter é string ta indo data é data ta indo caracter.
Debuga o trecho dos Oprint para ver.
Desculpa não conseguir ajudar com mais certeza.
Por favor Acessar ou Registrar para participar da conversa.
- CLAUDIOADVPL
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 49
- Obrigados Recebidos: 0
8 anos 5 meses atrás #30764
por CLAUDIOADVPL
Respondido por CLAUDIOADVPL no tópico Erro na qry
Boa tarde Willian,
fica na paz Brother, já mostrou o caminho...vou investigar e posto aqui uma vez solucionado o problema.
Obrigado.
fica na paz Brother, já mostrou o caminho...vou investigar e posto aqui uma vez solucionado o problema.
Obrigado.
Por favor Acessar ou Registrar para participar da conversa.
Tempo para a criação da página:0.138 segundos