problema com botão cadastrar

Delphi

20/09/2012

Amigos..tenho um botão cadastrar só que não está funcionando..

erro "[b]ADOQuerySqlsuptec: Missing SQL property[/b]

as propriedades estão corretas..

segue o código..
procedure Tfrmsuportetecnico.btngravarClick(Sender: TObject);
var
reg : integer;
begin
DM.ADOQuerySQLsuptec.active := true;
DM.ADOQuerySQLsuptec.Last;
reg := DM.ADOQuerySQLsuptec.recordcount;
reg := reg + 1;
DM.ADOQuerySQLsuptec.SQL.CLEAR;
DM.ADOQuerySQLsuptec.Open;
DM.ADOQuerySQLsuptec.SQL.ADD('insert into suportetecnico');
DM.ADOQuerySQLsuptec.SQL.ADD('(filial, setor, nomepc, ip, datasup, nomefunc, descricaosup)');
DM.ADOQuerySQLsuptec.SQL.ADD('values(:filial, :setor, :nomepc, :ip, :datasup, :nomefunc, :descricaosup)');
DM.ADOQuerySQLsuptec.Parameters.ParamByName('filial').Value := combobox.text;
DM.ADOQuerySQLsuptec.Parameters.ParamByName('setor').Value := edit1.text;
DM.ADOQuerySQLsuptec.Parameters.ParamByName('nomepc').Value := edit2.text;
DM.ADOQuerySQLsuptec.Parameters.ParamByName('ip').Value := edit3.text;
DM.ADOQuerySQLsuptec.Parameters.ParamByName('datasup').Value := FormatDatetime('yyyy/mm/dd', Strtodate(maskedit1.text));
DM.ADOQuerySQLsuptec.Parameters.ParamByName('nomefunc').Value := edit4.text;
DM.ADOQuerySQLsuptec.Parameters.ParamByName('descricaosup').Value := memo.text;
DM.ADOQuerySQLsuptec.execsql;
showmessage('Dados gravados c/ sucesso!');
combobox.Text:='';
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
maskedit1.Text:='';
edit4.Text:='';
memo.Text:='';
end;


grato a quem possa ajudar..
Mauricio Nicoli

Mauricio Nicoli

Curtidas 0

Respostas

Claudia Nogueira

Claudia Nogueira

20/09/2012

Amigos..tenho um botão cadastrar só que não está funcionando..

erro "[b]ADOQuerySqlsuptec: Missing SQL property[/b]

as propriedades estão corretas..

segue o código..
procedure Tfrmsuportetecnico.btngravarClick(Sender: TObject);
var
reg : integer;
begin
DM.ADOQuerySQLsuptec.active := true;
DM.ADOQuerySQLsuptec.Last;
reg := DM.ADOQuerySQLsuptec.recordcount;
reg := reg + 1;
DM.ADOQuerySQLsuptec.SQL.CLEAR;
DM.ADOQuerySQLsuptec.Open;
DM.ADOQuerySQLsuptec.SQL.ADD('insert into suportetecnico');
DM.ADOQuerySQLsuptec.SQL.ADD('(filial, setor, nomepc, ip, datasup, nomefunc, descricaosup)');
DM.ADOQuerySQLsuptec.SQL.ADD('values(:filial, :setor, :nomepc, :ip, :datasup, :nomefunc, :descricaosup)');
DM.ADOQuerySQLsuptec.Parameters.ParamByName('filial').Value := combobox.text;
DM.ADOQuerySQLsuptec.Parameters.ParamByName('setor').Value := edit1.text;
DM.ADOQuerySQLsuptec.Parameters.ParamByName('nomepc').Value := edit2.text;
DM.ADOQuerySQLsuptec.Parameters.ParamByName('ip').Value := edit3.text;
DM.ADOQuerySQLsuptec.Parameters.ParamByName('datasup').Value := FormatDatetime('yyyy/mm/dd', Strtodate(maskedit1.text));
DM.ADOQuerySQLsuptec.Parameters.ParamByName('nomefunc').Value := edit4.text;
DM.ADOQuerySQLsuptec.Parameters.ParamByName('descricaosup').Value := memo.text;
DM.ADOQuerySQLsuptec.execsql;
showmessage('Dados gravados c/ sucesso!');
combobox.Text:='';
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
maskedit1.Text:='';
edit4.Text:='';
memo.Text:='';
end;


grato a quem possa ajudar..


Tenta fechar o componente antes e também não pode dar o opem com o SQL vazio.

procedure Tfrmsuportetecnico.btngravarClick(Sender: TObject);
var
reg : integer;
begin
DM.ADOQuerySQLsuptec.active := true;
DM.ADOQuerySQLsuptec.Last;
reg := DM.ADOQuerySQLsuptec.recordcount;
reg := reg + 1;
DM.ADOQuerySQLsuptec.Close;
DM.ADOQuerySQLsuptec.SQL.CLEAR;
DM.ADOQuerySQLsuptec.SQL.ADD('insert into suportetecnico');
DM.ADOQuerySQLsuptec.SQL.ADD('(filial, setor, nomepc, ip, datasup, nomefunc, descricaosup)');
DM.ADOQuerySQLsuptec.SQL.ADD('values(:filial, :setor, :nomepc, :ip, :datasup, :nomefunc, :descricaosup)');
DM.ADOQuerySQLsuptec.Parameters.ParamByName('filial').Value := combobox.text;
DM.ADOQuerySQLsuptec.Parameters.ParamByName('setor').Value := edit1.text;
DM.ADOQuerySQLsuptec.Parameters.ParamByName('nomepc').Value := edit2.text;
DM.ADOQuerySQLsuptec.Parameters.ParamByName('ip').Value := edit3.text;
DM.ADOQuerySQLsuptec.Parameters.ParamByName('datasup').Value := FormatDatetime('yyyy/mm/dd', Strtodate(maskedit1.text));
DM.ADOQuerySQLsuptec.Parameters.ParamByName('nomefunc').Value := edit4.text;
DM.ADOQuerySQLsuptec.Parameters.ParamByName('descricaosup').Value := memo.text;
DM.ADOQuerySQLsuptec.execsql;
showmessage('Dados gravados c/ sucesso!');
combobox.Text:='';
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
maskedit1.Text:='';
edit4.Text:='';
memo.Text:='';
end;
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

20/09/2012

Tem um erro de digitação na minha resposta. Opem = Open.
GOSTEI 0
Mauricio Nicoli

Mauricio Nicoli

20/09/2012

deu certo..

só que assim..no caso eu não tinha nenhum registro sabe..no banco de dados..
ai ao clicar no botão gravar o codigo inserido automaticamente no banco de dados
foi o "2" ..

só que não tinha nenhum registro ainda no banco..

o certo teria que ser codigo 1...depois sim codigo 2..
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

20/09/2012

deu certo..

só que assim..no caso eu não tinha nenhum registro sabe..no banco de dados..
ai ao clicar no botão gravar o codigo inserido automaticamente no banco de dados
foi o "2" ..

só que não tinha nenhum registro ainda no banco..

o certo teria que ser codigo 1...depois sim codigo 2..



Qual banco de dados você usa? Se for o firebird com generator + trigger, aí não importa a quantidade de registros no banco de dados, importa a posição atual do generator. [url]http://www.firebase.com.br/fb/artigo.php?id=2396[/url]

Se for outro banco de dados como MySQL por exemplo, tem que ver a posição do campo auto-increment.

Pode ter começado do 2 simplesmente por algum teste que você tenha feito anteriormente e tenha incrementado 1.
GOSTEI 0
Mauricio Nicoli

Mauricio Nicoli

20/09/2012

olha o que tá acontecendo..

uso mysql ok

tinha no registro o codigo 5 certo? com todos os demais campos preenchidos..

ai fiz um teste..

dei um delete from suportetecnico;

isso limpou o registro inserido..ficou sem nada..

ai eu registrei um novo registro..e em vez de ficar o codigo com 1 sendo o primeiro registro do banco ficou 5..
ele não tá entendendo que não tinha registro no banco de dados e simplesmente soma com o último registro feito.
se foi o codigo 4..mesmo que seja apagado o registro no banco antes de rodar o programa ele não ta entendendo isso..
GOSTEI 0
Mauricio Nicoli

Mauricio Nicoli

20/09/2012

olha o que tá acontecendo..

uso mysql ok

tinha no registro o codigo 5 certo? com todos os demais campos preenchidos..

ai fiz um teste..

dei um delete from suportetecnico;

isso limpou o registro inserido..ficou sem nada..

ai eu registrei um novo registro..e em vez de ficar o codigo com 1 sendo o primeiro registro do banco ficou 5..
ele não tá entendendo que não tinha registro no banco de dados e simplesmente soma com o último registro feito.
se foi o codigo 4..mesmo que seja apagado o registro no banco antes de rodar o programa ele não ta entendendo isso..

não entendi..
GOSTEI 0
Mauricio Nicoli

Mauricio Nicoli

20/09/2012

corrigindo..

olha o que tá acontecendo..

uso mysql ok

tinha no registro o codigo 5 certo? com todos os demais campos preenchidos..

ai fiz um teste..

dei um delete from suportetecnico;

isso limpou o registro inserido..ficou sem nada..

ai eu registrei um novo registro..e em vez de ficar o codigo com 1 sendo o primeiro registro do banco ficou 6..
ele não tá entendendo que não tinha registro no banco de dados e simplesmente soma com o último registro feito.
se foi o codigo 5..mesmo que seja apagado o registro no banco antes de rodar o programa ele teria que ir para o 1 e não o 6 registro..
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

20/09/2012

olha o que tá acontecendo..

uso mysql ok

tinha no registro o codigo 5 certo? com todos os demais campos preenchidos..

ai fiz um teste..

dei um delete from suportetecnico;

isso limpou o registro inserido..ficou sem nada..

ai eu registrei um novo registro..e em vez de ficar o codigo com 1 sendo o primeiro registro do banco ficou 5..
ele não tá entendendo que não tinha registro no banco de dados e simplesmente soma com o último registro feito.
se foi o codigo 4..mesmo que seja apagado o registro no banco antes de rodar o programa ele não ta entendendo isso..


Isso ocorre por que além de você excluir os registros com DELETE FROM tabela, você tem que zerar o auto-increment: ALTER TABLE tabela AUTO_INCREMENT = 1;
GOSTEI 0
Mauricio Nicoli

Mauricio Nicoli

20/09/2012

muito obrigado..era isso mesmo..me ajudou muito..

tenho muito que aprender ainda gatinha..

valeu..
GOSTEI 0
POSTAR