• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

haemdall

lazarus/mysql - dbgrid

12 mensagens neste tópico

Boa tarde

Estou a fazer um programa em lazarus e usando o mysql como base de dados e surgiu-me um problema.

ao abrir um form onde apenas tenho um dbgrid, era suposto aparecer nessa dbgrid, uma lista que seria o resultado de um comando sql. o problema é que ao "arrancar" o programa, o dbgrid fica vazio. o programa não dá erro, simplesmente não aparece nada no dbgrid. o mais estranho é que estou a usar o mesmo tipo de "regras" que no resto do programa:

MySQL50Connection1.open;

  if sqlquery1.active then sqlquery1.Close;

  sqlquery1.sql.text:='select cod_estante, nr_seccao, quant_stock, nome from estagio.prod_alocado,estagio.produtos where prod_alocado.nrproduto = produtos.nr_produto';

  sqlquery1.open;     

gostava de saber se alguem me pode dar umas dicas sobre como corrigir este erro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pode não ser... mas confirma se tens a grid bem ligada a um datasource e o datasource ligado ao query

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

antes de mais ...obrigado por alguem responder...neste caso o agradecimento é para o/a mikas

sim...ja verifiquei isso várias vezes e parece que tudo está a funcionar correctamente. ja consegui corrigir esse erro. no entanto o programa tem outra dbgrid e a outra tem outro problema.

ao aplicar o comando:

MySQL50Connection1.open;

if sqlquery1.active then sqlquery1.Close;

sqlquery1.sql.text:='select nome, sum(quant_stock)as total from estagio.prod_alocado, estagio.produtos where nrproduto = produtos.nr_produto group by nome';

sqlquery1.open;

surge este erro:

mysql50connection1: error executing query: you have an error in your sql sybtax; check the manual that corresponds to your mysql server version for the right syntax to use near 'group by nome)' at line 1.

o meu orientador disse para eu tentar "manualmente", ou seja com este tipo de linguagem:

mysql_init(pmysql(@qmysql));

sock:=mysql_real_connect(pmysql(@qmysql),'localhost','root','eseig','estagio',3306,nil,0);

tmp:='select nome, sum(quant_stock)as total from estagio.prod_alocado, estagio.produtos where nrproduto = produtos.nr_produto group by nome';

query:=pchar(tmp);

mysql_query(sock,query);

recbuf:=mysql_store_result(sock);

while(mysql_fetch_row(recbuf))

rowbuf:=mysql_fetch_row(recbuf);

showmessage(rowbuf[0]); 

mas se antes era complicado para mim ...assim é que não chego lá...

poderá o problema ser por causa de o comando sql ter um Sum()e a versão que uso não ser a correcta? se for...haverá outra forma de contornar este problema?com outro comando?ou até com outra opção que não a dbgrid?

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Primeiro, é O Mikas....

Tenta por no select, o nome das tabelas antes do nome do campo...

por exemplo: prod_alocado.nome, SUM(produtos.quant_stock)...

Por vezes o MySQL "baralha.se" quando o select e feito a varias tabelas e não é especificada a tabela antes do nome do campo...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas já agora... esse erro e mm do MySQL, ou seja... nao tem nada a ver com a dbgrid...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja tentei colocar à frente do nome do campo, o nome da tabela e o resultado é o mesmo.

vou ter mesmo que tentar inserir ocomando manualmente

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

amigo,

tive um problema parecido uma vez e quando vi era pq a propriedade DataSource do SQLQuery1 estava com o DataSource1, enquanto não era para estar ligado a nenhum DataSource.

confere se não é isso...

abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

alguém me pode ajudar com duvidas que tenho relativamente à execução de um programa em lazarus cuja base de dados é mysql? é bastante urgente..obrigada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

esta alguem disponivel para me tirar uma duvida sobre um erro que me deu em lazarus?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes tentar apagar os componentes mysql e todos os relacionados com a bd, incluindo o datasource.

E voltar a colocá-los no form. Penso que por vezes o lazarus se baralha.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

alguém me pode ajudar com duvidas que tenho relativamente à execução de um programa em lazarus cuja base de dados é mysql? é bastante urgente..obrigada

esta alguem disponivel para me tirar uma duvida sobre um erro que me deu em lazarus?

como já alguém respondeu antes, se não colocares as duvidas, não podes esperar respostas...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora