- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Socorro com uma Query
×
Linguagem de Programação ADVPL
Perguntas Socorro com uma Query
- mbrigagao
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 350
- Obrigados Recebidos: 1
10 anos 1 mês atrás #25634
por mbrigagao
Socorro com uma Query foi criado por mbrigagao
Pessoal, bom dia.
Estou tendo um problema com uma query, que até uns dias atrás funcionava perfeitamente.
Hoje ela dá o seguinte erro :
ADS - Replace Error - 5003: The data supplied was longer than Advantage expected. - Field: G1RECNO Table: \\192.168.4.3\d$\outsourcing\clientes\g5d800\protheus_data\system\t_sc824470.dbf
Segue o bloco do codigo que está com 'erro'...
A query montada fica assim :
SELECT SG1.*, SG1.R_E_C_N_O_ AS G1RECNO FROM SG1010 SG1 WHERE SG1.D_E_L_E_T_ = ' ' AND SG1.G1_FILIAL='01' AND SG1.G1_COMP ='UNV-003-00-PINT' AND SG1.G1_GROPC=' ' AND SG1.G1_OPC=' ' ORDER BY G1_FILIAL,G1_COD,G1_COMP,G1_TRT
Pelo query analizer do APSDU ela roda certinho.... porém na hora de copiar o resultado para o DBF é que dá o err.
Alguém poderia me dar uma luz ?
Estou tendo um problema com uma query, que até uns dias atrás funcionava perfeitamente.
Hoje ela dá o seguinte erro :
ADS - Replace Error - 5003: The data supplied was longer than Advantage expected. - Field: G1RECNO Table: \\192.168.4.3\d$\outsourcing\clientes\g5d800\protheus_data\system\t_sc824470.dbf
Segue o bloco do codigo que está com 'erro'...
dbSelectArea("SG1")
dbSetOrder(1)
cQryTRB := "SELECT SG1.*,SG1.R_E_C_N_O_ AS G1RECNO FROM "
cQryTRB += RetSqlName("SG1") + " SG1 WHERE "
cQryTRB += "SG1.D_E_L_E_T_ = ' ' AND "
cQryTRB += "SG1.G1_FILIAL='"+cSG1Filial+"' And SG1.G1_COMP ='"+cCodOrig+"' "
If !lPyme
cQryTRB += " And SG1.G1_GROPC='"+cGrpOrig+"' And SG1.G1_OPC='"+cOpcOrig+"' "
EndIf
cQryTRB += " ORDER BY "+SqlOrder(SG1->(IndexKey()))
cQryTRB := ChangeQuery(cQryTRB)
dbUseArea( .T.,"TOPCONN", TcGenQry( ,,cQryTRB ), cAliasTMP, .T., .F. )
TcSetField(cAliasTMP,"G1_INI","D",8,0)
TcSetField(cAliasTMP,"G1_FIM","D",8,0)
dbSelectArea(cAliasTMP)
copy to &_carq
dbUseArea( .T.,__LOCALDRIVER, _cArq,cAliasTRB, .T. , .F. )
dbSelectArea(cALiasTRB)
dbGoTop()
A query montada fica assim :
SELECT SG1.*, SG1.R_E_C_N_O_ AS G1RECNO FROM SG1010 SG1 WHERE SG1.D_E_L_E_T_ = ' ' AND SG1.G1_FILIAL='01' AND SG1.G1_COMP ='UNV-003-00-PINT' AND SG1.G1_GROPC=' ' AND SG1.G1_OPC=' ' ORDER BY G1_FILIAL,G1_COD,G1_COMP,G1_TRT
Pelo query analizer do APSDU ela roda certinho.... porém na hora de copiar o resultado para o DBF é que dá o err.
Alguém poderia me dar uma luz ?
Por favor Acessar ou Registrar para participar da conversa.
- admin
- Desconectado
- Administrador
Menos
Mais
- Postagens: 216
- Obrigados Recebidos: 0
- mbrigagao
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 350
- Obrigados Recebidos: 1
10 anos 1 mês atrás #25645
por mbrigagao
Respondido por mbrigagao no tópico Socorro com uma Query
Olhando pelo APSDU, na barra de 'status' tem 1.033.833....
Fazendo uma query para contar os registros ativos tenho 807.982... já contando todos registros (ativos e deletados) tenho 961.367.
Na query da rotina que está acusando erro, pude verificar que tenho registros com o RECNO acima de 1.000.000, me se for contar os registros que estão dentro do resultado da query não chegam a 1.000 ....
Como resolver esse problema para que eu possa gerar o DBF ?
Fazendo uma query para contar os registros ativos tenho 807.982... já contando todos registros (ativos e deletados) tenho 961.367.
Na query da rotina que está acusando erro, pude verificar que tenho registros com o RECNO acima de 1.000.000, me se for contar os registros que estão dentro do resultado da query não chegam a 1.000 ....
Como resolver esse problema para que eu possa gerar o DBF ?
Por favor Acessar ou Registrar para participar da conversa.
- admin
- Desconectado
- Administrador
Menos
Mais
- Postagens: 216
- Obrigados Recebidos: 0
10 anos 1 mês atrás #25647
por admin
Respondido por admin no tópico Socorro com uma Query
Rapaz tenta mudar para:
TCQUERY cQuerAA New Alias "TEMP1"
Senão acho que vai ter que gerar como ctree este arquivo, ou na boa, reduzir esta tabela eliminando os registros deletados.
TCQUERY cQuerAA New Alias "TEMP1"
Senão acho que vai ter que gerar como ctree este arquivo, ou na boa, reduzir esta tabela eliminando os registros deletados.
Por favor Acessar ou Registrar para participar da conversa.
- mbrigagao
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 350
- Obrigados Recebidos: 1
10 anos 1 mês atrás #25651
por mbrigagao
Respondido por mbrigagao no tópico Socorro com uma Query
Bom dia,
Eliminar os deletados resolve até certo ponto, pois como a tabela continua 'crescendo' o problema apareceria em breve...
Consegui resolver da seguinte forma usando TcSetField(cAliasTMP,"G1RECNO","N",15,0), conforme abaixo :
Assim não terei problemas....
Grato a todos.
Eliminar os deletados resolve até certo ponto, pois como a tabela continua 'crescendo' o problema apareceria em breve...
Consegui resolver da seguinte forma usando TcSetField(cAliasTMP,"G1RECNO","N",15,0), conforme abaixo :
dbSelectArea("SG1")
dbSetOrder(1)
cQryTRB := "SELECT SG1.*,SG1.R_E_C_N_O_ AS G1RECNO FROM "
cQryTRB += RetSqlName("SG1") + " SG1 WHERE "
cQryTRB += "SG1.D_E_L_E_T_ = ' ' AND "
cQryTRB += "SG1.G1_FILIAL='"+cSG1Filial+"' And SG1.G1_COMP ='"+cCodOrig+"' "
If !lPyme
cQryTRB += " And SG1.G1_GROPC='"+cGrpOrig+"' And SG1.G1_OPC='"+cOpcOrig+"' "
EndIf
cQryTRB += " ORDER BY "+SqlOrder(SG1->(IndexKey()))
cQryTRB := ChangeQuery(cQryTRB)
dbUseArea( .T.,"TOPCONN", TcGenQry( ,,cQryTRB ), cAliasTMP, .T., .F. )
TcSetField(cAliasTMP,"G1_INI","D",8,0)
TcSetField(cAliasTMP,"G1_FIM","D",8,0)
TcSetField(cAliasTMP,"G1RECNO","N",15,0)
Assim não terei problemas....
Grato a todos.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Socorro com uma Query
Tempo para a criação da página:0.140 segundos