hybrispt 0 Posted December 10, 2005 Report Share Posted December 10, 2005 Oi Alguém me sabe dizer como faço um array com o tamanho do nº de linhas de uma determinada tabela numa BD? Preciso fazer leitura de um ficheiro txt e para cada linha lida, preciso verificar numa tabela se esse valor existe. Penso que a melhor solução seria a passagem desses valores da tabela para um array e assim a verificação seria mais rápida. Atenção - Estou a lidar com tabelas e ficheiros na ordem das 10000 linhas cada. Ou seja, por cada linha do ficheiro, há uma instrução SQL para verificar um valor noutras 10000... Obrigado. Link to post Share on other sites
milks 0 Posted December 10, 2005 Report Share Posted December 10, 2005 Boas, Não sei se é possível, mas experimentaste contar as linhas e declarar o array com o número lido? (Não sei se é possível) Tipo: ' Código pra contar as linhas do ficheiro ' Que fica guardado na var NumLinhas Dim arrNLinhas(NumLinhas) As String Ou então experimenta declarar o array e usar o ReDim, mas aqui tens uma quebra em performance. Mas em qualquer dos casos, se são 10000 linhas no ficheiro, isso vai ser lento. Penso eu. Não podes construir a instrução SQL à medida que vais lendo o ficheiro? E no fim executas apenas 1 instrução à BD, usando "[...]campo = 'valorLinha' OR [...]" assim devolvia-te todos os registos que tinha na BD e que estavam presentes na BD. Link to post Share on other sites
hybrispt 0 Posted December 11, 2005 Author Report Share Posted December 11, 2005 Não dá para ir construíndo porque só posso pegar nos valores que não existam. Mesmo que a query me devolvesse esses valores (supondo que assim a performance fosse maior), teria de os re-pesquisar no ficheiro para obter. Vou tentar essa do array com variável mas, acho que não dá. Obrigado. Link to post Share on other sites
perdido_e_sozinho 0 Posted December 12, 2005 Report Share Posted December 12, 2005 Se o objectivo é verificar se uma determinado conjunto de registos existe ou não numa tabela poderá usar uma consulta de SQL: SELECT * FROM tabela WHERE Nome IN ('JOAO','ANDRE') Devolve todos os resultados com joao e andre no nome SELECT * FROM tabela WHERE Nome NOT IN ('JOAO','ANDRE') Devolve todos os resultados sem joao e andre no nome Não percebi ao certo o que pretendes fazer, mas se estás a utilizar VB + Access a performance do mesmo é muito baixa, mesmo usando ADO. O VB.NET tem uma performance maior. Só para teres um termo de comparação usando access para carregar 2000 registos com 5 compos para uma listview levava 15 minutos no VB6 e 30 segundos no VB.NET. Para o vb.net poderias usar o Streamreader que pode ler linha a linha, e executar uma SQL linha a linha, e logo executar uma SQL linha a linha, ou construir uma consulta on fly com o SQL acima referido. Espero que isto te ajude. Com os melhores cumprimentos, Sérgio Matias Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now