AJUDA COM VB URGENTE

USUARIO.EXCLUIDOS 07/08/2007 17:58:56
#229878
PESSOAL,

ESTOU DESENVOLVENDO UM MODULO DE GERAÇÃO DE RELATÓRIO, SO QUE PARA CHEGAR NO RELATORIO PASSO POR MUITAS CONSULTAS.
ACONTEC UM SEGUINTE O VB NAO ESTA DEIXANDO EU TRABALHAR COM TABELAS TEMPORARIS
EX:

PARA DUAS PESSOAS GERAREM O MESMO RELATORIO NO MESMO TEMPO, PRECISO DESTAS TABELAS ENTAO O QUE FARIA CRIARIA AS TABELAS TEMPORARIA E DEPOIS RESGATARIA NOVAMENTE PARA EFETUAR UMA CONSULTA.

MEU CODIGO
 With cmd
.CommandTimeout = 0
.ActiveConnection = cnn
.CommandType = adCmdText
.CommandText = "SELECT NUMEROCONTRATO,DATEDIFF(DAY,VENCDEBITO,GETDATE()) AS DIASATRASO,CARTEIRA " & _
"INTO #DADOSHSBCBANCO " & _
"FROM CONTRATOS " & _
"WHERE CARTEIRA IN (" & Carteiras & ") " & _
"AND STATUSCONTRATO NOT IN ('DEVOLVIDO')"

.CommandText = "SELECT A.NUMEROCONTRATO,DIASATRASO,CARTEIRA,NUMEROPARCELA,NUMEROACORDO,VALORTOTAL,DATAPAGAMENTO,VALORPAGAMENTO " & _
"INTO #HSBCBANCO " & _
"FROM #DADOSHSBCBANCO A, PARCELAS B " & _
"Where A.NUMEROCONTRATO = B.NUMEROCONTRATO"
.Execute

.CommandText = "SELECT * " & _
"INTO MIS.DBO.HSBCBANCODADOS " & _
"FROM #HSBCBANCO A " & _
"WHERE NUMEROACORDO IN (SELECT MAX(NUMEROACORDO) FROM #HSBCBANCO B " & _
"WHERE A.NUMEROCONTRATO = B.NUMEROCONTRATO)"
.Execute

.CommandText = "SELECT NUMEROCONTRATO,DIASATRASO,CARTEIRA,NUMEROACORDO,MIN(NUMEROPARCELA)PP,MAX(NUMEROPARCELA)PPL,SUM(VALORTOTAL) VALORTOTAL " & _
"INTO MIS.DBO.HSBCBANCO1 " & _
"FROM #HSBCBANCODADOS " & _
"GROUP BY NUMEROCONTRATO,DIASATRASO,CARTEIRA,NUMEROACORDO " & _
"ORDER BY NUMEROCONTRATO"
.Execute

End With


COMO POSSO FAZER ISSO GERAR UM RELATORIO UTILIZANDO OS COMANDOS ACIMA
LCSD 07/08/2007 18:11:54
#229884
UMA DICA:

PQ VC não gera uma PROC, e passa esses dados como PARÂMETRO pra essa PROC.
E no CRYSTAL, ao invés de VC passar a TABELA, passa a PROC (nestas PROCÂÂ's têm que ter os campos que VC deseja exibir).

Aí VC chama o Crystal e passa os parâmetros da PROC via CRYSTAL e pronto... O Crystal se encarrega de rodar a proc e joga os dados pro relatório. Sem problema de vários usuários rodarem o mesmo relatório ao mesmo tempo.

é tranquilo e facinnnnnnnnnn
USUARIO.EXCLUIDOS 07/08/2007 18:17:56
#229886
SÓ TEM UM PROBLEMA OS RELATORIOS SERAM EXIBIDOS EM UMA PAGINA ASP QUE O VB IRA CHAMAR...
POR ISSO PRECISO RODAR ESTE PROCESSO DESTA FORMA POIS ELE IRA GERAR DUAS TABELAS QUE AI IREI PASSAR OS PARAMETROS E SELECIONAR SOMENTE OS DADOS QUE ME INTERESSAM

ATT,
LCSD 07/08/2007 18:21:14
#229889
SE VC rodar tudo isso no Query Analizer, ele te gerará todas essas tabelas temporárias numa boa???
USUARIO.EXCLUIDOS 07/08/2007 18:42:44
#229893
SIM
USUARIO.EXCLUIDOS 07/08/2007 20:35:56
#229901
Resposta escolhida
1 - Tabelas temporárias são visíveis á todos os usuários de uma mesma seção. Desse modo, a mesma tabela temporária pode ser acessada por todos na mesma seção ao mesmo tempo. Sendo assim, utilizar as tabelas temporárias para gerar relatórios simultâneos em estações diferentes requer que as tabelas tenham nomes distintos. Usar o nome do usuário da estação como prefixo da tabela, por exemplo.

2 - Quando você "abre" um recordset, está trazendo para a memória local o conteúdo da tabela. Se após abrir o recordset você atribuir um Nothing á ActiveConnection, a conexão é encerrada, mas os dados continuam na estação, podendo ser utilizados como melhor aprouver. é como se fosse uma tabela temporária, mas espelha uma tabela do banco de dados, ok?

3 - Parta do seguinte princípio: Do fim para o começo ás vezes é melhor.
- Quais campos são mostrados no relatório?
- De onde vêm esses campos (quais tabelas, com quais filtros)?
- Se há uma forma de filtrar esses dados inserindo-os em tabelas temporárias, há como simplesmente retornar suas consultas. Considere salvar as consultas não como tabelas temporárias, mas como arquivos XML nomeados, á partir da instrução Save do objeto Recordset. Depois de salvos, esses XML podem ser abertos por outros objetos Recordset até mesmo em processos distintos, sem perder nada.
- Se o relatório é em página ASP, que portanto aceita Recordsets, você pode transferir o objeto Recordset diretamente, sem precisar salvar em arquivo ou banco, por meio de uma função pública. Avalie essa possibilidade.
- Se a sua página ASP gera HTML dinâmico, pode ser mais interessante adotar uma sequência de Stored Procedures parametrizadas, que poderão ser carregadas diretamente, como fossem tabelas, com os filtros que o cliente ASP sugerir, e não filtros globais, como em uma tabela temporária.
USUARIO.EXCLUIDOS 08/08/2007 09:07:37
#229929
PROFESSOR,

MUITO OBRIGADO PELA SUA AJUDA VOU AVALIAR AS SUGESTOES PASSADAS E APLICAR A MELHOR.

GRATO
MARCELO
Tópico encerrado , respostas não são mais permitidas