AJUDA NA PESQUISA SQL

SMZTODOPODEROSO 20/12/2012 08:31:53
#416222
Estou usando o seguinte código

Set cnn = CreateObject([Ô]ADODB.Connection[Ô])
cnn.Open [Ô]DRIVER={MySQL ODBC 3.51 Driver};SERVER =[Ô] + xabase + [Ô];DATABASE=escola;UID=eli;PWD=eli123;OPTION=16427[Ô]
Set rs = CreateObject([Ô]ADODB.RecordSet[Ô])
Set rs.ActiveConnection = cnn
stropen = [Ô]SELECT count(idalmoco) AS total1, sum(preco) AS total2, sum(multa) AS total3, sum(multa + preco) AS total4, almoco.nrprocesso, alunos.nome, alunos.escalao From almoco INNER JOIN alunos ON almoco.nrprocesso = alunos.nrprocesso WHERE alunos.turma = [ô][Ô] + Text1.Text + [Ô][ô] GROUP BY almoco.nrprocesso ASC[Ô]
rs.Open stropen, cnn
.DrawText 9.7, n, [Ô]Senhas Marcadas[Ô], [Ô]Fnt1[Ô], 12, pdfAlignLeft
.DrawText 12.6, n, [Ô]Preço[Ô], [Ô]Fnt1[Ô], 12, pdfAlignLeft
.DrawText 13.7, n, [Ô]V. Multa[Ô], [Ô]Fnt1[Ô], 12, pdfAlignLeft
.DrawText 15.8, n, [Ô]Total[Ô], [Ô]Fnt1[Ô], 12, pdfAlignLeft
.DrawText 17.5, n, [Ô]Escalão[Ô], [Ô]Fnt1[Ô], 12, pdfAlignLeft
n = n - 0.5
fimciclo:
If rs.EOF Or rs.BOF Then
rs.Close
GoTo salta
Else
nome = StrConv(rs.Fields([Ô]nome[Ô]), vbProperCase)
escalao = rs.Fields([Ô]escalao[Ô])
nrprocesso = rs.Fields([Ô]nrprocesso[Ô])
total1 = rs.Fields([Ô]total1[Ô])
total2 = Format(rs.Fields([Ô]total2[Ô]), [Ô]0.00 €[Ô])
total3 = Format(rs.Fields([Ô]total3[Ô]), [Ô]0.00 €[Ô])
total4 = Format(rs.Fields([Ô]total4[Ô]), [Ô]0.00 €[Ô])
prere2 = nrprocesso + [Ô] - [Ô] + nome + [Ô][Ô]
.DrawText 1, n, prere2, [Ô]Fnt1[Ô], 12, pdfAlignLeft
.DrawText 11, n, total1, [Ô]Fnt1[Ô], 12, pdfAlignRight
.DrawText 13.2, n, total2, [Ô]Fnt1[Ô], 12, pdfAlignRight
.DrawText 14.8, n, total3, [Ô]Fnt1[Ô], 12, pdfAlignRight
.DrawText 16.5, n, total4, [Ô]Fnt1[Ô], 12, pdfAlignRight
.DrawText 18.1, n, escalao, [Ô]Fnt1[Ô], 12, pdfAlignRight
n = n - 0.5
rs.MoveNext
End If
GoTo fimciclo
salta:


o problema é que cada vez que faço uma pesquisa o pc bloqueia durante 2-3 minutos, alguém sabe como contornar isto?
VELDRAME 20/12/2012 09:12:14
#416225
Oque seria: [Ô] .DrawText [Ô]

Acho que esta faltando o comando With para este parâmetro.
Diz ai, demora mas retorna o resultado?

Se tem erro, qual a msg?
MARCELO.TREZE 20/12/2012 09:38:48
#416228
eu acredito que o problema esteja no uso do goto, pois isto é algo meio grotesco para tal consulta tente um do while que talvez agilize um pouco mais as coisas, veja:

If Not (rs.EOF and rs.BOF) Then
Do While Not rs.EOF
nome = StrConv(rs.Fields([Ô]nome[Ô]), vbProperCase)
escalao = rs.Fields([Ô]escalao[Ô])
nrprocesso = rs.Fields([Ô]nrprocesso[Ô])
total1 = rs.Fields([Ô]total1[Ô])
total2 = Format(rs.Fields([Ô]total2[Ô]), [Ô]0.00 €[Ô])
total3 = Format(rs.Fields([Ô]total3[Ô]), [Ô]0.00 €[Ô])
total4 = Format(rs.Fields([Ô]total4[Ô]), [Ô]0.00 €[Ô])
prere2 = nrprocesso + [Ô] - [Ô] + nome + [Ô][Ô]
.DrawText 1, n, prere2, [Ô]Fnt1[Ô], 12, pdfAlignLeft
.DrawText 11, n, total1, [Ô]Fnt1[Ô], 12, pdfAlignRight
.DrawText 13.2, n, total2, [Ô]Fnt1[Ô], 12, pdfAlignRight
.DrawText 14.8, n, total3, [Ô]Fnt1[Ô], 12, pdfAlignRight
.DrawText 16.5, n, total4, [Ô]Fnt1[Ô], 12, pdfAlignRight
.DrawText 18.1, n, escalao, [Ô]Fnt1[Ô], 12, pdfAlignRight
n = n - 0.5
rs.MoveNext
Loop
end if


tente esta alteração



SMZTODOPODEROSO 20/12/2012 09:54:04
#416229
já experimentei mas continua a demora o mesmo tempo.
Os dados são devolvidos correctamente, mas com muito tempo de espera.
MARCELO.TREZE 20/12/2012 09:55:55
#416230
então vamos lá que componente é este que possui a propriedade Drawtext?

SMZTODOPODEROSO 20/12/2012 10:22:52
#416235
Drawtext é para escrever num ficheiro pdf, ou seja gera um relatório em pdf
SMZTODOPODEROSO 20/12/2012 10:41:23
#416236
já fiz mais um teste. Desta vez executei no mysql e o resultado foi o seguinte

Mostrando registos 0 - 26 (27 total, O Query demorou 57.5900 sec)Comando SQL:

SELECT COUNT( idalmoco ) AS total1, SUM( preco ) AS total2, SUM( multa ) AS total3, SUM( multa + preco ) AS total4, almoco.nrprocesso, alunos.nome, alunos.escalao
FROM almoco
INNER JOIN alunos ON almoco.nrprocesso = alunos.nrprocesso
WHERE alunos.turma = [ô]7A[ô]
GROUP BY almoco.nrprocesso ASC
LIMIT 0 , 30


total1 total2 total3 total4 nrprocesso nome escalao
43 0.00 0 0.00 8113 MIGUEL ALEXANDRE R ASCENSO A
61 89.06 0 89.06 8136 RAFAEL FERREIRA GAUDÊNCIO C
27 39.42 0 39.42 8440 Ana Maria R Duque C
23 33.58 0 33.58 8441 Beatriz Isabel S Lopes C

57 segundos a executar este comando, o que tem de mal este comando? alguém sabe
FEDERHEN 20/12/2012 11:34:26
#416238
tem muitos registros na tabela?
MARCELO.TREZE 20/12/2012 11:53:15
#416242
fora alguns pequenos detalhes que as vezes fazem a diferença o processo de criação do pdf é que está reduzindo o desempenho.

exemplo para ver se a query melhora

SELECT COUNT( [txt-color=#0000f0]almoco[/txt-color].idalmoco ) AS total1, SUM( [txt-color=#0000f0]almoco[/txt-color].preco ) AS total2, SUM( [txt-color=#0000f0]almoco[/txt-color].multa ) AS total3, SUM( [txt-color=#0000f0]almoco[/txt-color].multa + [txt-color=#0000f0]almoco[/txt-color].preco ) AS total4, almoco.nrprocesso, alunos.nome, alunos.escalao
FROM almoco
INNER JOIN alunos ON almoco.nrprocesso = alunos.nrprocesso
WHERE alunos.turma = [ô]7A[ô]
GROUP BY almoco.nrprocesso ASC
LIMIT 0 , 30

e você pode testar lançando os dados em um list para ver se o problema é realmente o tempo para se gerar o pdf.

SMZTODOPODEROSO 20/12/2012 17:43:27
#416280
agradeço a todos novamente. Resolvi o problema, actualizei o mysql :-)
Tópico encerrado , respostas não são mais permitidas