Fórum Incluir, Altera, Excluir, com DBExpress alguem pode meAjuda? #336102

12/01/2007

0

Tenho uma Tabela chamada Bairro com um campo NOME_BAIRRO


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

Max2006

Responder

Posts

12/01/2007

Ruyoutor

Vou te passar um exemplo para ver se você consegue

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.


Responder

Gostei + 0

12/01/2007

Max2006

Coloquei um Table e na propriedade SQLConnection coloquei o componente SQLConection e na Table Name coloquei bairro.

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?


Responder

Gostei + 0

12/01/2007

Max2006

Eu vou tenvar......


Responder

Gostei + 0

12/01/2007

Max2006

Quando eu cliquei no Botão incluir apareceu a seguinte mensagem X marcando o xilREPEATABLEREAD em vermelho.


procedure T_BAIRRO.BitBtn1Click(Sender: TObject);
begin
//_DM.SQLTable1.Append;
try
Transacao.TransactionID:= 1;
Transacao.IsolationLevel:= xilREPEATABLEREAD;
Udeclared idenfitier xilREPEATABLEREAD


Responder

Gostei + 0

12/01/2007

Ruyoutor

Entre na parte dos codigos do seu DataModule e em uses lá em cima copie todas as units que tem lá e cole ná clausula uses do Form que vc tá colocando o código de inserção

e veja se funciona


Responder

Gostei + 0

12/01/2007

Ruyoutor

Outra coisa amigo eu sempre trabalhei com esse componentes da DBExpress usando Edit´s e combo´s numca usei dbcombo e dbedit usando DBcombo eu não garanto que vai funcionar


Responder

Gostei + 0

12/01/2007

Max2006

OBS: Passou para á próxima linha mas não deixou eu inserir a Unit Classes...

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..


Responder

Gostei + 0

12/01/2007

Max2006

Passei para mais um pará metro

Oque é isso ´SQLDML.ExecSQL;´ está informando undeclared identifier SQLDML.


Responder

Gostei + 0

12/01/2007

Max2006

Consegui fazer roda com esse código.

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....


Responder

Gostei + 0

12/01/2007

Max2006

Coloquei um componente SimpleDataSet

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.


Responder

Gostei + 0

12/01/2007

Max2006

Este é o código...
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;


Responder

Gostei + 0

12/01/2007

Max2006

O nome está BDComboBox mas é um combobox....


Responder

Gostei + 0

12/01/2007

Ruyoutor

O seu codigo de update está errado

Seria assim

´Update set Bairro (Nome_bairro = :bairro) where Codido do bairro = :cdBairro)

Passe o cdbairro como parâmetro


Responder

Gostei + 0

12/01/2007

Max2006

O seu codigo de update está errado Seria assim ´Update set Bairro (Nome_bairro = :bairro) where Codido do bairro = :cdBairro) Passe o cdbairro como parâmetro


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


Responder

Gostei + 0

12/01/2007

Ruyoutor

de dois cliques em cima do simpledataset que vc adiconou na janela que vai abrir você clica com o direito do mouse e selecione add all fields

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar