Fórum Incluir, Altera, Excluir, com DBExpress alguem pode meAjuda? #336102
12/01/2007
0
Coloquei um Data Module com um componente SQLConection da palheta DBExpress.
Já configurei o SQLConection para o acesso ao Banco de dados ´Firebird´
Coloquei um formulário com 4 botões com o nome (Incluir, Alterar, Excluir e Sair), um DBComboBox e um DBGrid.
Eu quero com esse botões realizar a incluisão, alteração e exclusão de registros.
Alguem pode me ajudar, pois sou novato este componente.
Max2006
Curtir tópico
+ 0Posts
12/01/2007
Ruyoutor
1 - Coleque na sua aplicação um conponente SQLDataSet da paleta DBExpress aponte ele para o sqlconnection
2 - fassa a sim quando for incluir
try Transacao.TransactionID:= 1; Transacao.IsolationLevel:= xilREPEATABLEREAD; DM.SQLConnection1.StartTransaction(transacao); MSQL:= ´insert into Bairro (Nome_Bairro) values (:Bairro) SQLDataSet1.Close; SQLDataSet1.CommandType:= ctQuery; SQLDataSet1.CommandText:= MSQL; SQLDataSet1.ParamByName(´bairro´).AsString:= DBComboBox.text; SQLDML.ExecSQL; DM.SQLConnection1.Commit(transacao); SimpleDataSet.Refresh; except DM.SQLConnection1.Rollback(transacao);
Explicação
Transacao - é uma variavel que tem que ser criada, o tipo é TTransactionDesc você inicia a transação no inicial através do StartTransaction do SqlConnection.
MSQL - é uma variavel string só para receber o codigo sql
Parâmetros - você vai ter que fazer essa inclusão por parâmetros usando a Função ParamByName para passar o valor do DBComboBox.text para o parâmetro.
Depois de passar os parametros vc executa o sqldataset e da um commit na transação.
para o DBGrid você vai ter que usar um simpledataset e um datasource ligados
vá na propriedade dataset do simpledataset e depois entre em commandText insira uma consulta sql para aparecer os capos no dbgrid
OBS: o unico componente que vc pode ligar a um dbgrid dessa paleta é o simpledataset porque é bidirecional observe que quando eu termino a inclusão eu dou um refresh nele para atualizar o dbgrid.
Alterar você usaria o updade ´Update bairro set (Nome_bairro = :bairro) where codigo do bairro = :cdbairro´ e passaria o bairro e o codigo do bairro por parâmetro.
Excluir você usaria o codigo do ´delete * from Bairro where codigo do bairro = :cdbairro´ e passaria o codigo do bairro por parâmetro.
cara testa pra ver se funciona se não funcionar não esta tão longe porque eu sempre utilizei os componentes do DBExpress assim.
Gostei + 0
12/01/2007
Max2006
No Botão Incluir cliquei e digitei Table.Append;
Então apareceu a mensagem.
Cannot modify a read-only dataset
Não pode modificar uma série de dados de leitura apenas.
Está informando que os dados está como leitura e agora como eu coloco de forma que eu possa Incluir dados?
Gostei + 0
12/01/2007
Max2006
Gostei + 0
12/01/2007
Max2006
procedure T_BAIRRO.BitBtn1Click(Sender: TObject);
begin
//_DM.SQLTable1.Append;
try
Transacao.TransactionID:= 1;
Transacao.IsolationLevel:= xilREPEATABLEREAD;
Udeclared idenfitier xilREPEATABLEREAD
Gostei + 0
12/01/2007
Ruyoutor
e veja se funciona
Gostei + 0
12/01/2007
Ruyoutor
Gostei + 0
12/01/2007
Max2006
Agorá está na última linha dizendo que a string é indeterminada mas eu já declarei como mostra oque pode ser...?
var
_BAIRRO: T_BAIRRO;
MSQL:String;
implementation
uses INTERCAMBIO;
{$R *.dfm}
procedure T_BAIRRO.BitBtn1Click(Sender: TObject);
begin
//_DM.SQLTable1.Append;
try
Transacao.TransactionID:= 1;
Transacao.IsolationLevel:= xilREPEATABLEREAD;
_DM.SQLConnection1.StartTransaction(transacao);
MSQL:= ´insert into Bairro (Nome_Bairro) values (:Bairro)
Interminate String a última linha está em vermelho..
Gostei + 0
12/01/2007
Max2006
Oque é isso ´SQLDML.ExecSQL;´ está informando undeclared identifier SQLDML.
Gostei + 0
12/01/2007
Max2006
procedure T_BAIRRO.BitBtn1Click(Sender: TObject);
begin
//_DM.SQLTable1.Append;
try
Transacao.TransactionID:= 1;
Transacao.IsolationLevel:= xilREPEATABLEREAD;
_DM.SQLConnection1.StartTransaction(transacao);
MSQL:= ´insert into Bairro (Nome_Bairro) values (:Bairro)´;
_DM.SQLDataSet1.Close;
_DM.SQLDataSet1.CommandType:= ctQuery;
_DM.SQLDataSet1.CommandText:= MSQL;
_Dm.SQLDataSet1.ParamByName(´bairro´).AsString:= DBComboBox1.text;
_Dm.SQLDataSet1.ExecSQL;
//SQLDML.ExecSQL;
_DM.SQLConnection1.Commit(transacao);
_DM.SimpleDataSet1.Refresh;
except
_DM.SQLConnection1.Rollback(transacao);
End;
end;
Agora vou ver como e que se faz para ligar o DBComboBox como vc me explicou....
Gostei + 0
12/01/2007
Max2006
Na propriedade Connection coloquei o SQLConnection.
Cliquei com o botão direito sobre o componente e cliquei em Edit Internal DataSet
Na propriedade CommandTex coloquei (select NOME_BAIRRO from BAIRRO;
Na propriedade ShemaName coloquei como SYSDBA
Cliquei denovo no componente e coloquei a propriedade Active do componente como True.
Executei o programa coloque um combobox em vez de um DBCombobox digitei no combobox cliquei no
botão incluir e funcionou agora vou ver como que se deleta.
Gostei + 0
12/01/2007
Max2006
De atualização.
Mas deu erro e me parece que é na linha SQL oque fzer...?
tOKEN UNKNOWN - LINE1, CHAR19
procedure T_BAIRRO.BitBtn2Click(Sender: TObject);
begin
try
Transacao.TransactionID:= 1;
Transacao.IsolationLevel:= xilREPEATABLEREAD;
_DM.SQLConnection1.StartTransaction(transacao);
MSQL:= ´Update bairro set (Nome_bairro = :bairro)´;
_DM.SQLDataSet1.Close;
_DM.SQLDataSet1.CommandType:= ctQuery;
_DM.SQLDataSet1.CommandText:= MSQL;
_Dm.SQLDataSet1.ParamByName(´BAIRRO´).AsString:= DBComboBox1.text;
_Dm.SQLDataSet1.ExecSQL;
//SQLDML.ExecSQL;
_DM.SQLConnection1.Commit(transacao);
_DM.SimpleDataSet1.Refresh;
except
_DM.SQLConnection1.Rollback(transacao);
end;
end;
Gostei + 0
12/01/2007
Max2006
Gostei + 0
12/01/2007
Ruyoutor
Seria assim
´Update set Bairro (Nome_bairro = :bairro) where Codido do bairro = :cdBairro)
Passe o cdbairro como parâmetro
Gostei + 0
12/01/2007
Max2006
Mas eu não tenho o campo código eu só tenho o campo ´nome_bairro´, e quando eu uso este comando SQL
MSQL:= ´Update set Bairro (Nome_bairro = :bairro) where Codido do bairro = :cdBairro)´;
Da o seguinte érro.
Esta dando erro: - Line1, char8
Gostei + 0
12/01/2007
Ruyoutor
na consulta vc vai colocar assim
update set bairro (nome_bairro = :bairro) where nome_bairro = :oldNome
SQLDataSet1.Parambyname(´bairro´).asstring := valor do novo bairro
SQLDataSet1.parambyname(´oldbairro).asstring := SimpleDataSetNome_Bairro.value;
eu botei simpledataset e sqldataset porque eu não sei o nome dos seus componentes mas é só mudar você vai passar por parâmetro o valor novo do nome do bairro pelo combo ou edit e o nome do bairro antigo que é o que esta atualmente na tabela por isso você vai usar o Simpledatasetnome_bairro.value.
Acho que agora vai! Tenta ai
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)