Aplicativo VB6 herdado sob erro Win7 SQL

Aplicativo VB6 herdado sob erro Win7 SQL

Temos um aplicativo legado bastante infeliz em funcionamento, escrito originalmente em VB6, que antecede qualquer pessoa em nosso departamento de TI em pelo menos 5 anos. Temos um desenvolvedor contratado para manutenção contínua e onde ele pode reescrever seções em código .NET (não tenho certeza sobre suas técnicas aqui, este é um trabalho paralelo para seu trabalho regular como engenheiro IBM) o aplicativo funciona bem (como é é) no Windows XP. Temos apenas algumas máquinas com Windows 7 principalmente para teste e esse aplicativo parece bater contra uma parede. Coisas como o fundo não carrega e erros de SQL. Isso está sendo executado até mesmo sob administrador.

A execução de um rastreamento SQL no painel de controle ODBC mostra várias coisas interessantes. Ele estabelece inicialmente uma conexão com o banco de dados com êxito, onde executa uma consulta para determinar se está executando a versão correta. Esta consulta funciona bem.

            558-1af0 ENTER SQLExecDirectW 
  HSTMT               0x020D7548
  WCHAR *             0x04C8F0F0 [     115] "SELECT count(*) c FROM tblSoftwareVersion WHERE  fldSoftwareVersion = '123456' AND fldSoftwareName = 'Application.VB'"
  SDWORD                   115

BMS             558-1af0 EXIT  SQLExecDirectW  with return code 1 (SQL_SUCCESS_WITH_INFO)
  HSTMT               0x020D7548
  WCHAR *             0x04C8F0F0 [     115] "SELECT count(*) c FROM tblSoftwareVersion WHERE  fldSoftwareVersion = '123456' AND fldSoftwareName = 'Application.VB'"
  SDWORD                   115

Em seguida, parece interromper sua conexão e não consegue encontrar a conexão ODBC, apesar de estar conectado ao mesmo banco de dados. A partir do rastreamento, parece que ele configura a conexão, então ele começa a disparar o SQLFreeStmt para desvincular e fechar, quando no aplicativo e tenta fazer o que quer que seja, não há conexão.

558-1af0 ENTER SQLFreeStmt 
  HSTMT               0x020D7548
  UWORD                        2 <SQL_UNBIND>

BMS             558-1af0 EXIT  SQLFreeStmt  with return code 0 (SQL_SUCCESS)
  HSTMT               0x020D7548
  UWORD                        2 <SQL_UNBIND>

Então isso acontece quando tento fazer algo que extraia dados

            558-1af0 ENTER SQLDriverConnectW 
  HDBC                0x020DDA00
  HWND                0x00000000
  WCHAR *             0x73EF8634 [      -3] "******\ 0"
  SWORD                       -3 
  WCHAR *             0x73EF8634 
  SWORD                       -3 
  SWORD *             0x00000000
  UWORD                        0 <SQL_DRIVER_NOPROMPT>

BMS             558-1af0 EXIT  SQLDriverConnectW  with return code -1 (SQL_ERROR)
  HDBC                0x020DDA00
  HWND                0x00000000
  WCHAR *             0x73EF8634 [      -3] "******\ 0"
  SWORD                       -3 
  WCHAR *             0x73EF8634 
  SWORD                       -3 
  SWORD *             0x00000000
  UWORD                        0 <SQL_DRIVER_NOPROMPT>

  DIAG [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0)

Quase todas as minhas pesquisas sobre esse assunto apresentam problemas de programação em que a cadeia de conexão apresenta problemas. A única coisa diferente neste cenário específico é o Windows 7. Sei que a cadeia de conexão está correta, pois funciona nas máquinas XP. Os componentes VB devem ainda estar funcionais no Win7. Meu computador está rodando win7 de 32 bits e meu VP está rodando Win7 de 64 bits e ambos têm o mesmo problema, então isso pode ser descartado.

Já tentei reinstalar o SQL Native Client e o runtime VB, bem como a aplicação em questão. Espero poder encontrar uma solução e não precisar recorrer ao uso da VM XP.

Editar - Bem, depois de muitas tentativas, fomos forçados a usar a VM XP como solução aqui. Ou os componentes VB não são tão compatíveis quanto afirmam ou este aplicativo antigo está fazendo algo engraçado.

Responder1

Se for um aplicativo executado na área de trabalho (ou seja, não como um serviço), você tentou configurar o aplicativo para ser executado em modo de compatibilidade? Eu tive um problema semelhante com um programa VB6 (mesma função para ler o registro chamado de duas partes diferentes do programa, uma funciona, a outra não, mas do IDE VB6 ambas funcionam) e apenas clicar com o botão direito e fazer o teste Win7 para compatibilidade e escolha o modo XP SP2 resolveu o problema.

Responder2

O modo XP acabou sendo a única solução que funcionaria.

informação relacionada