Não consigo gravar no banco de dados de jeito nenhum!
Pessoal, estou com um problema de iniciante que não consigo resolver.
Tenho uma aplicação e quero gravar dados no banco de dados FIREBIRD
estou trabalhando com os componentes: IBDataset -> DatasetProvider -> ClientDataSet -> DataSource -> DBGrid
desejo gravar num determinado campo de minha tabela um valor.. ai no botão GRAVAR estou colocando
IBDataset.Edit;IBDataset.Post;
Mensagem de erro: IBDataSet: Cannot modify a read only dataset
Só que não existe nenhuma propriedade, tanto no IBDataSet, quando no ClientDataSet que esteja com o Read-Only ativado, não entendo porque dá esse tipo de erro. Estou fazendo algo errado?
Também já tentei gravar no banco direto pelo ClientDataSet colocando assim:
ClientDataSet.Edit;ClientDataSet.Post;
Mensagem de erro: ClientDataSet is not in edit mode.
Alguma luz pro meu problema?
Tenho uma aplicação e quero gravar dados no banco de dados FIREBIRD
estou trabalhando com os componentes: IBDataset -> DatasetProvider -> ClientDataSet -> DataSource -> DBGrid
desejo gravar num determinado campo de minha tabela um valor.. ai no botão GRAVAR estou colocando
IBDataset.Edit;IBDataset.Post;
Mensagem de erro: IBDataSet: Cannot modify a read only dataset
Só que não existe nenhuma propriedade, tanto no IBDataSet, quando no ClientDataSet que esteja com o Read-Only ativado, não entendo porque dá esse tipo de erro. Estou fazendo algo errado?
Também já tentei gravar no banco direto pelo ClientDataSet colocando assim:
ClientDataSet.Edit;ClientDataSet.Post;
Mensagem de erro: ClientDataSet is not in edit mode.
Alguma luz pro meu problema?
João Telles
Curtidas 0
Respostas
Adilson Rumao
28/12/2010
GOSTEI 0
João Telles
28/12/2010
Eu já li esse tópico. Estou utilizando Delphi 8, nenhuma dica do tópico serviu para mim. Todas opções read-only de todos os componentes estão False. Acredito q seja na forma como estou tentando gravar no banco.
GOSTEI 0
Dannicleo Teles
28/12/2010
Olha joão, utilizo TSQLDataSet, TDataSetProvider e TClientDataSet sem problemas aki, porém não sei quanto ao fato de vc estar utilizando o IBDataSet.
os comandos eu passo para o clientdataset
aqui ta assim, ve se pode te ajudar.
os comandos eu passo para o clientdataset
aqui ta assim, ve se pode te ajudar.
GOSTEI 0
João Telles
28/12/2010
Dannicléo obrigado pelas explicações. Criei uma aplicação nova apenas para testar os componentes..
apenas coloquei os items:
SQLCONNECTION1|SQLDATASET1|SQLDATASETPROVIDER1|CLIENTDATASET1|DATASOURCE1|DBGRID1
Até aqui tudo bem.. o DBGRID mostrou a tabela normal contendo os dados registrados.
Contudo, coloquei um botão no form com o seguinte código:
sqldataset1.Open;sqldataset1.Insert;sqldataset1.FieldByName('ID').Value := 1;sqldataset1.FieldByName('NOME').Value := 'João';sqldataset1.FieldByName('IDADE').Value := 23;sqldataset1.Post;
quando executei a aplicação e cliquei no botão apareceu a mensagem novamente: cannot modify a read-only dataset
Alguém tem alguma idéia do que pode ser? acredito que não seja falha no código... será que meu servidor firebird está com alguma configuração que não deixa gravar? como faço pra alterar?
apenas coloquei os items:
SQLCONNECTION1|SQLDATASET1|SQLDATASETPROVIDER1|CLIENTDATASET1|DATASOURCE1|DBGRID1
Até aqui tudo bem.. o DBGRID mostrou a tabela normal contendo os dados registrados.
Contudo, coloquei um botão no form com o seguinte código:
sqldataset1.Open;sqldataset1.Insert;sqldataset1.FieldByName('ID').Value := 1;sqldataset1.FieldByName('NOME').Value := 'João';sqldataset1.FieldByName('IDADE').Value := 23;sqldataset1.Post;
quando executei a aplicação e cliquei no botão apareceu a mensagem novamente: cannot modify a read-only dataset
Alguém tem alguma idéia do que pode ser? acredito que não seja falha no código... será que meu servidor firebird está com alguma configuração que não deixa gravar? como faço pra alterar?
GOSTEI 0
Ricardo Araujo
28/12/2010
você já tentou fazer a inclusão usando SQL puro ?vou colocar o exemplo.
este _sqlConn pode ser colocar dentro de um DataModule, tem que esta SQLConnectio1, este _sqlConn só será usado, insert, update, delete;
os restante do componente do DBExpress pode ser ligando normalmente, apenas ira da um refresh na tabela para visualizar a nova inclusão.
tomará que te ajude.
_sqlConn.Close; _sqlConn.Connection := SQLConnection1; _sqlConn.SQL.Clear; _sqlConn.SQL.Add('INSERT INTO CLIENTE '); _sqlConn.SQL.Add('(NOME, IDADE)'); _sqlConn.SQL.Add(' VALUES '); _sqlConn.SQL.Add('(:NOME, :IDADE )');
_sqlConn.ParamByName('NOME').AsString := FNome; _sqlConn.ParamByName('IDADE' ).AsString := FIdade;
_sqlConn.ExecSQL() ;
depois de executar, faz o seguinte fecha o clientDataSet de depois abra com os dados da sua Query normal.
Espero ter ajudadorbbarreto
rbbarreto@hotmail.com
GOSTEI 0
Dannicleo Teles
28/12/2010
Cara, o usuário que vc esta se logando no banco tem permissão para gravar?Tente adicionar um registro pelo banco mesmo, usando o mesmo usuário que vc loga na conexão do delphi.
GOSTEI 0