Usando IBDataSet da Paleta Interbase - Delphi 5
Bom dia pessoal,
Estou usando ibdataset do interbase e quando gravo alguma coisa, além de não efetivar a gravação quando eu dou um ibtransation.commit, o ibdataset é fechado e a ibtransation.active fica falso. Alguém sabe por que?
Obrigada
Mariangela
Estou usando ibdataset do interbase e quando gravo alguma coisa, além de não efetivar a gravação quando eu dou um ibtransation.commit, o ibdataset é fechado e a ibtransation.active fica falso. Alguém sabe por que?
Obrigada
Mariangela
Anonymous
Curtidas 0
Respostas
Afarias
08/04/2003
>> Estou usando ibdataset do interbase e quando gravo alguma coisa,
>> além de não efetivar a gravação
Vc deve preencher corretamente as propriedades INSERTSQL, UPDATESQL e DELETESQL -- clique com o botão direito no IBDataset e então no menu Dataset Editor para usar o ´assistente´ para isso.
>> quando eu dou um ibtransation.commit, o ibdataset é fechado e a
>> ibtransation.active fica falso. Alguém sabe por que?
Isso é normal. O Interbase precisa de um transação aberta mesmo para seleção de registros. o COMMIT (ou ROLLBACK) fecha a transação e ai, todos os Datasets são fechados.
Vc pode sempre usar o COMMITRETAINING ou ROLLBACKRETAINING q gravam as alterações mas não fecham a transação!
Agora, é sempre bom, usar o COMMIT vez em quando (manter transações abertas por longos períodos não é muito bom)
Abraço.
>> além de não efetivar a gravação
Vc deve preencher corretamente as propriedades INSERTSQL, UPDATESQL e DELETESQL -- clique com o botão direito no IBDataset e então no menu Dataset Editor para usar o ´assistente´ para isso.
>> quando eu dou um ibtransation.commit, o ibdataset é fechado e a
>> ibtransation.active fica falso. Alguém sabe por que?
Isso é normal. O Interbase precisa de um transação aberta mesmo para seleção de registros. o COMMIT (ou ROLLBACK) fecha a transação e ai, todos os Datasets são fechados.
Vc pode sempre usar o COMMITRETAINING ou ROLLBACKRETAINING q gravam as alterações mas não fecham a transação!
Agora, é sempre bom, usar o COMMIT vez em quando (manter transações abertas por longos períodos não é muito bom)
Abraço.
GOSTEI 0
Anonymous
08/04/2003
Obrigada, afarias, eu usava o BDE, estou tentando colocar o ibx agora, por isso estou com tantas dúvidas.
Se vc puder me ajudar de novo, agradeço muito, é o seguinte:
a propriedade modifySQL está assim:
UPDATE CLIENTES
SET CPF_CGC = :CPF_CGC,
NOME_CLIENTE = :NOME_CLIENTE,
ENDERECO = :ENDERECO,
BAIRRO = :BAIRRO,
CIDADE = :CIDADE,
CEP = :CEP,
EMAIL = :EMAIL,
LOCAL_TRABALHO = :LOCAL_TRABALHO,
FONE_TRABALHO = :FONE_TRABALHO,
RAMAL_TRABALHO = :RAMAL_TRABALHO,
NOME_PAI = :NOME_PAI,
NOME_MAE = :NOME_MAE,
RG = :RG,
FONE_RESIDENCIAL = :FONE_RESIDENCIAL,
FAX = :FAX,
CELULAR = :CELULAR,
DT_NASC = :DT_NASC,
INSCR_ESTADUAL = :INSCR_ESTADUAL,
INSCR_MUNICIPAL = :INSCR_MUNICIPAL,
COD_CLIENTE = :COD_CLIENTE,
UF = :UF,
RENDA_MENSAL = :RENDA_MENSAL,
SEXO = :SEXO,
FISICA_JURIDICA = :FISICA_JURIDICA,
COD_USUARIO = :COD_USUARIO,
DT_CADASTRO = :DT_CADASTRO,
HR_MN_CADASTRO = :HR_MN_CADASTRO
WHERE CPF_CGC = :CPF_CGC
sendo que a chave primaria é cpf_cgc.
Qdo eu gravo (post, applyupdates e comitretaining) e chamo de novo o mesmo cpf, ele não mostra os outros dados na tela, mas mostra um grid de uma tabela que é relacionada a essa com os dados corretos, portanto ele encontra o registro. Aí eu fecho o form (no fechar tem um commit e um start transacao) entro de novo, chamo o mesmo registro e ele não alterou nada.
Você tem uma idéia do que pode estar errado?
Obrigada
Mariangela
Se vc puder me ajudar de novo, agradeço muito, é o seguinte:
a propriedade modifySQL está assim:
UPDATE CLIENTES
SET CPF_CGC = :CPF_CGC,
NOME_CLIENTE = :NOME_CLIENTE,
ENDERECO = :ENDERECO,
BAIRRO = :BAIRRO,
CIDADE = :CIDADE,
CEP = :CEP,
EMAIL = :EMAIL,
LOCAL_TRABALHO = :LOCAL_TRABALHO,
FONE_TRABALHO = :FONE_TRABALHO,
RAMAL_TRABALHO = :RAMAL_TRABALHO,
NOME_PAI = :NOME_PAI,
NOME_MAE = :NOME_MAE,
RG = :RG,
FONE_RESIDENCIAL = :FONE_RESIDENCIAL,
FAX = :FAX,
CELULAR = :CELULAR,
DT_NASC = :DT_NASC,
INSCR_ESTADUAL = :INSCR_ESTADUAL,
INSCR_MUNICIPAL = :INSCR_MUNICIPAL,
COD_CLIENTE = :COD_CLIENTE,
UF = :UF,
RENDA_MENSAL = :RENDA_MENSAL,
SEXO = :SEXO,
FISICA_JURIDICA = :FISICA_JURIDICA,
COD_USUARIO = :COD_USUARIO,
DT_CADASTRO = :DT_CADASTRO,
HR_MN_CADASTRO = :HR_MN_CADASTRO
WHERE CPF_CGC = :CPF_CGC
sendo que a chave primaria é cpf_cgc.
Qdo eu gravo (post, applyupdates e comitretaining) e chamo de novo o mesmo cpf, ele não mostra os outros dados na tela, mas mostra um grid de uma tabela que é relacionada a essa com os dados corretos, portanto ele encontra o registro. Aí eu fecho o form (no fechar tem um commit e um start transacao) entro de novo, chamo o mesmo registro e ele não alterou nada.
Você tem uma idéia do que pode estar errado?
Obrigada
Mariangela
GOSTEI 0
Afarias
08/04/2003
>> eu usava o BDE, estou tentando colocar o ibx agora
FAZ BEM (na minha opinião)
>> é o seguinte: a propriedade modifySQL está assim:
>> sendo que a chave primaria é cpf_cgc.
UPDATE CLIENTES
SET CPF_CGC = :CPF_CGC,
NOME_CLIENTE = :NOME_CLIENTE,
{etc...}
WHERE CPF_CGC = :CPF_CGC // erro!
acho q vc se enganou: o WHERE é:
WHERE CPF_CGC = :OLD_CPF_CGC
OK?! e mais:
Como é o SELECT ??? Existe JOIN?? se sim, vc terá q fechar/abrir a query!!
E, NO IBX, NÃO USE CACHEDUPDATES!!
Abraço!
FAZ BEM (na minha opinião)
>> é o seguinte: a propriedade modifySQL está assim:
>> sendo que a chave primaria é cpf_cgc.
UPDATE CLIENTES
SET CPF_CGC = :CPF_CGC,
NOME_CLIENTE = :NOME_CLIENTE,
{etc...}
WHERE CPF_CGC = :CPF_CGC // erro!
acho q vc se enganou: o WHERE é:
WHERE CPF_CGC = :OLD_CPF_CGC
OK?! e mais:
Como é o SELECT ??? Existe JOIN?? se sim, vc terá q fechar/abrir a query!!
E, NO IBX, NÃO USE CACHEDUPDATES!!
Abraço!
GOSTEI 0