Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wilsoncrescencio

Onde está o erro nesta consulta SQL

Recommended Posts

Estou com os seguintes problemas:

Coloquei este código de consulta e somatoria em sql:

procedure TF_Simulado.Button3Click(Sender: TObject);
begin
with master1 do
begin
	Close;
	SQL.Clear;
	SQL.Add('SELECT aluno.nome, simuladums.pontos, simuladums.disciplina(SELECT SUM(PONTOS) AS PONTOS FROM SIMULADUMS)');
	sql.Add('FROM aluno INNER JOIN simuladums ON aluno.aluno_id = simuladums.aluno_id');
	sql.Add('WHERE aluno.nome =' + DBEdit1.Text);
	Open;
end;
EditSomaPontos.Text:= master2.FieldByName('PONTOS').Text;
end;

Mostra sempre o erro: (operador faltando) na expressão de consulat 'aluno.nome=NOME DO ALUNO". Processo STOPED

Onde estou errando?

 

O Segunod problema é gravar PONTOs na master2.FieldByName('PONTOS').Text;

Pontos é um campo numérico duplo. Um asFloat

Como faço isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desta maneira não dá erro... mas também não aparece no dbedit o resultado:

master2.Close;
master2.sql.clear;
master2.SQL.Add('SELECT aluno.nome, simuladums.pontos, simuladums.disciplina, simuladums.total');
master2.SQL.Add('FROM aluno INNER JOIN simuladums ON aluno.aluno_id = simuladums.aluno_id');
master2.SQL.Add('WHERE ALUNO.NOME = "'+DBEDIT1.TEXT+'" and simuladums.total=(SELECT SUM(PONTOS) AS PONTOS FROM SIMULADUMS)'); // mandando somar os pontos da disciplina de matematica.
master2.ExecSQL;
master2.Open;
master2.Active:=true;
begin

Porque será?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, não sei se vai te ajudar, mas eu fiz um teste aqui, criei duas tabelas

aluno

aluno_id --integer(11)

nome -- varchar(20)

 

tab2 (que no seu caso seria simuladums)

aluno_id --integer(11)

pontos -- Double(15)

disciplina --varchar(20)

 

aí eu fiz a consulta dessa maneira

procedure TForm1.Button1Click(Sender: TObject);
begin
ZQuery1.Active:=False;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('SELECT aluno.nome, tab2.pontos,tab2.disciplina, SUM(PONTOS) AS PONTOS ');
ZQuery1.sql.Add('FROM aluno INNER JOIN tab2 ON aluno.aluno_id = tab2.aluno_id');
ZQuery1.sql.Add('WHERE (aluno.nome =:a)and(tab2.disciplina=:b) group by aluno.nome,tab2.disciplina');
ZQuery1.ParamByName('a').Value:= Edit1.Text;
ZQuery1.ParamByName('b').Value:=Edit3.Text;
ZQuery1.Active:=True;
Edit2.Text:=ZQuery1.Fields[3].AsString;
end;
No caso, coloquei o nome do aluno no edit1 e a disciplina no edit3, então ele exibe o resultado no edit2,

Bom, mas eu utilizo o MySql e o Zeos para conexão com o banco.

Abraço!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.