PROBLEMA DE MIGRAÇÃO V4 -> V7

Boa tarde.

Estou em um cliente fazendo migração de um projeto da V4 para V7 e tive problemas com algumas aplicações. Ao executar a consulta, o sistema apresenta o erro abaixo:

ERRO
Erro ao acessar o banco de dados
[Microsoft][ODBC SQL Server Driver][SQL Server]The multi-part identifier “apt2.Plaiteproc” could not be bound.
select count(*) from (select DISTINCT apt2.aptmaqcod AS MAQUINA , CONVERT(DATE,apt2.aptdata) AS DIA , apt2.Plaiteproc AS PRODUTO from widl.APT1002 apt2 JOIN widl.APT100B aptB ON apt2.Planro = aptB.Planro AND apt2.Plaiteproc = aptB.Plaiteproc AND apt2.Plaitemaq = aptB.Plaitemaq AND apt2.Plaprcseq = aptB.Plaprcseq AND apt2.Aptsequenc = aptB.Aptsequenc group by apt2.aptmaqcod, CONVERT(DATE,apt2.aptdata),apt2.Plaiteproc) nm_sel_esp group by apt2.aptmaqcod, CONVERT(DATE,apt2.aptdata),apt2.Plaiteproc

Mexi em tudo o q podia para tentar resolver o problema e a única coisa que resolveu foi refazer a aplicação do zero.
Porém tenho 2 aplicações com esse problema que nem refazendo a aplicação resolveu!

Então gerei a aplicação e editei o arquivo aplicacao_total.class.php e alterei a ultima linha desse bloco:
if (in_array(strtolower($this->Ini->nm_tpbanco), $this->Ini->nm_bases_mssql))
{
$nm_comando = “select count() from (" . $nm_comando . ") nm_sel_esp ";
}
else
{
$nm_comando = "select count(
) from (” . $nm_comando . ") nm_sel_esp “;
}
$nm_comando .= " group by MAQUINA, CONVERT(DATE,DIA)”;

Com isso a aplicação funcionou, mas se eu gerar novamente a aplicação as alterações que fiz serão sobrescritas, gerando novamente o problema.

Preciso de uma ajuda para solucionar esse problema, pois sem isso não conseguirei fechar o projeto de migração.

Grato

Marcio

Marcio,

Teria como você detalhar um pouco mais este segundo problema? É uma app de consulta? Como está o select na aplicação?

att,
Bernhard Bernsmann

Bernhard, boa noite.

Sim, é uma aplicação consulta.
Select:

select DISTINCT 
apt2.aptmaqcod AS MAQUINA , 
CONVERT(DATE,apt2.aptdata) AS DIA , 
apt2.Plaiteproc AS PRODUTO 
from widl.APT1002 apt2 
JOIN widl.APT100B aptB	ON apt2.Planro = aptB.Planro 
						AND apt2.Plaiteproc = aptB.Plaiteproc 
						AND apt2.Plaitemaq = aptB.Plaitemaq 
						AND apt2.Plaprcseq = aptB.Plaprcseq 
						AND apt2.Aptsequenc = aptB.Aptsequenc 
group by apt2.aptmaqcod, CONVERT(DATE,apt2.aptdata), apt2.Plaiteproc

Na verdade o problema é o mesmo, mas para deixar a aplicação funcionando, eu alterei manualmente o arquivo PHP gerado na publicação do SC, porém se precisar publicar novamente o SC vai gerar novo arquivo com o problema.

Pelo erro me parece que o SC está utilizando o nome do campo da base e não o alias do campo em suas rotinas de totalização.

A base do cliente é MS SQL Server.

Grato pelo retorno

Marcio.

Marcio,

O Sr. já tentou criar uma VIEW para o SELECT desta aplicação? E em seguida criar a aplicação em cima desta view?

*Esta solução resolve/resolveria seu problema?

att,
Bernhard Bernsmann

Bernhard, acredito que isso resolveria o problema, porém essas aplicações de consultas estão lendo o banco de dados do ERP do cliente, não creio que eles aceitariam criar views nesse banco.
Outro problema é que estou encontrando novas aplicações com esse problema e não daria pra criar uma view em cada aplicação que gerar esse problemas, o projeto deve ter mais de 300 consultas!.

Marcio,

Vou reportar este problema para nossa equipe de bugs.

Qual tipo de conexão o Sr. está utilizando? ODBC?

att,
Bernhard Bernsmann

Obrigado pelo retorno.

Estou usando conexão nativa SQL Server .

Att

Marcio

Bernhard, consegui desenroscar esses problemas.

Me pareceu que o Scriptcase não mudava o comando SQL mesmo quando eu fazia alterações nele.
Li a respeito de alguns problemas relacionados no Forum, mas era no ambiente instalado da própria V7, porém estou utilizando o ambiente da V6.

Consegui resolver, forçando um erro no SQL da aplicação, no meu caso coloquei as tabelas entre colchetes ( [ ] ), que no próprio SQL Server funcionaria.
Rodei a aplicação, óbvio que de erro no SQL, depois voltei o SQL original.

A aplicação voltou a funcionar, em alguns casos os campos sumiram outros não, mas foi só coloca-los no lugar e resolvido.

Acho que vale a pena a Equipe analisar esse sintoma, pois me parece um erro que está ocorrendo com outros usuários.

Obrigado pela atenção.

Marcio

Marcio,

Foi o problema das aplicações não atualizarem?

att,
Bernhard Bernsmann

Não tenho certeza se é o mesmo problema que outros reclamaram no forum, mas foi a impressão que tive.
Pois quando eu alterava o SQL e executava a aplicação o erro era o mesmo e com o mesmo select antes da alteração.

Att
Marcio

Marcio,

Então o problema devia ser esse mesmo. Caso o problema volte a acontecer por gentileza nos informe.

att,
Bernhard Bernsmann