Fórum Não consigo gravar no banco de dados de jeito nenhum! #393096
28/12/2010
0
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
Curtir tópico
+ 0Posts
28/12/2010
Adilson Rumao
Gostei + 0
28/12/2010
João Telles
Gostei + 0
28/12/2010
Dannicleo Teles
os comandos eu passo para o clientdataset
aqui ta assim, ve se pode te ajudar.
Gostei + 0
29/12/2010
João Telles
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
29/12/2010
Ricardo Araujo
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
05/01/2011
Dannicleo Teles
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)