Não grava no banco com DateTimePiker
no evento onchange do datetimerpicker:
procedure TfrmPrincipal.DateTimePicker1Change(Sender: TObject);
begin
DataModule1.ClientDataSet1.Edit;
DataModule1.ClientDataSet1DATA_ENTREGA.Value:= DateTimePicker1.Date;
DataModule1.ClientDataSet1.Post;
end;
Alguem me ajuda? Obrigado.
Caube
Respostas
Developer1978
31/05/2009
DataModule1.ClientDataSet1.ApplyUpdate(0);
Caube
31/05/2009
Developer1978
31/05/2009
procedure TFormCadProdutos.DateTimePicker1Change(Sender: TObject);
begin
DM.cds_Cad_Produtos.Edit;
DM.cds_Cad_ProdutosDTALT.AsDateTime := DateTimePicker1.Date;
DM.cds_Cad_Produtos.Post;
DM.cds_Cad_Produtos.ApplyUpdates(0);
end;
procedure TFormCadProdutos.btnGravarClick(Sender: TObject);
begin
if DM.cds_Cad_Produtos.State = dsEdit then
begin
DM.cds_Cad_ProdutosDTALT.AsDateTime := DateTimePicker1.Date;
DM.cds_Cad_Produtos.Post;
DM.cds_Cad_Produtos.ApplyUpdates(0);
end;
end;
Henrique Rodrigues
31/05/2009
faz o post mas não o update, conferi os componentes com os do expemplo que funciona e está tudo igual.
Danielrsanches
31/05/2009
abraço !!
Henrique Rodrigues
31/05/2009
dmreceitas.ClientDataSet1.Post;
dmreceitas.ClientDataSet1.ApplyUpdates(-1); //já tentei -1, 0, 1
Estão aí os comandos que usei, acho que não há nada errdo com eles, mas não sei o que o ocorre.
Danielrsanches
31/05/2009
o comando ´dmreceitas.ClientDataSet1.insert´ nada mais é do que um comando que executa uma sequencia de comandos SQL ... o mesmo ocorre com o comando ´dmreceitas.ClientDataSet1.post´ ... e é esses comandos SQL que vc tem que verificar ...
espero q tenha entendido algo !! rsrsrsrs
qq coisa é só postar ...
abraço !!
Woinch
31/05/2009
Aroldo Zanela
31/05/2009
Tem como você colocar a sequência de componentes utilizados e as suas respectivas ligações?
Fiz um teste aqui com Delhi 6 Pro e FB 2.1 e funcionou normalmente:
/*==============================================================*/ /* Table: PEDIDO */ /*==============================================================*/ create table PEDIDO ( PEDI_ID INTEGER not null, PEDI_ENTREGA DATE not null, constraint PK_PEDIDO primary key (PEDI_ID) );
Por crença, utilizei o OnCloseUp:
[code]
procedure TForm1.cds1AfterPost(DataSet: TDataSet);
begin
cds1.ApplyUpdates(0);
end;
procedure TForm1.cds1AfterDelete(DataSet: TDataSet);
begin
cds1.ApplyUpdates(0);
end;
procedure TForm1.dtp1CloseUp(Sender: TObject);
begin
cds1.Append;
cds1PEDI_ID.Value := 1;
cds1PEDI_ENTREGA.Value := dtp1.DateTime;
cds1.Post;
end;
[/code;
Aroldo Zanela
31/05/2009
Tem como você colocar a sequência de componentes utilizados e as suas respectivas ligações?
Fiz um teste aqui com Delhi 6 Pro e FB 2.1 e funcionou normalmente:
/*==============================================================*/ /* Table: PEDIDO */ /*==============================================================*/ create table PEDIDO ( PEDI_ID INTEGER not null, PEDI_ENTREGA DATE not null, constraint PK_PEDIDO primary key (PEDI_ID) );
Por crença, utilizei o OnCloseUp:
[code]
procedure TForm1.cds1AfterPost(DataSet: TDataSet);
begin
cds1.ApplyUpdates(0);
end;
procedure TForm1.cds1AfterDelete(DataSet: TDataSet);
begin
cds1.ApplyUpdates(0);
end;
procedure TForm1.dtp1CloseUp(Sender: TObject);
begin
cds1.Append;
cds1PEDI_ID.Value := 1;
cds1PEDI_ENTREGA.Value := dtp1.DateTime;
cds1.Post;
end;
[/code;
Aroldo Zanela
31/05/2009
Tem como você colocar a sequência de componentes utilizados e as suas respectivas ligações?
Fiz um teste aqui com Delhi 6 Pro e FB 2.1 e funcionou normalmente:
/*==============================================================*/ /* Table: PEDIDO */ /*==============================================================*/ create table PEDIDO ( PEDI_ID INTEGER not null, PEDI_ENTREGA DATE not null, constraint PK_PEDIDO primary key (PEDI_ID) );
Por crença, utilizei o OnCloseUp:
procedure TForm1.cds1AfterPost(DataSet: TDataSet); begin cds1.ApplyUpdates(0); end; procedure TForm1.cds1AfterDelete(DataSet: TDataSet); begin cds1.ApplyUpdates(0); end; procedure TForm1.dtp1CloseUp(Sender: TObject); begin cds1.Append; cds1PEDI_ID.Value := 1; cds1PEDI_ENTREGA.Value := dtp1.DateTime; cds1.Post; end;
Henrique Rodrigues
31/05/2009
No SQLDataSet o comando sql coloqueis os campos ao invés de ´*´ e funcionou. mas...
na mesma tabela tem um campos para colocar imagem, aí quando eu insiro um registro sem a imagem ele funciona, se eu colocar a imagem ele não registro no banco.
Usando o componente OpenPictureDialog. Usei um modelo ue tenho aqui
IF OpenPictureDialog1.execute then Begin imagem:=Tpicture.create(); imagem.loadfromfile(OpenPictureDialog1.filename); clipboard.Assign(imagem); DBImage1.PasteFromClipboard; imagem.Free; end;
Henrique Rodrigues
31/05/2009
Henrique Rodrigues
31/05/2009
Danielrsanches
31/05/2009
porque vc não carrega direto no dbimage ???
IF OpenPictureDialog1.execute then Begin dbimage1.Picture.LoadFromFile(OpenPictureDialog1.filename); end;
abraços !!!
Henrique Rodrigues
31/05/2009
Agora o interessante é o defeito, se eu registrar um novo cadastro sem a foto ele grava no banco, se eu colocar a foto ele não grava.
o Dbimage está ligado da mesma forma que o dbedit do formulário de inclusão.
Danielrsanches
31/05/2009
Henrique Rodrigues
31/05/2009
Danielrsanches
31/05/2009
qq outra dúvida é só postar !!!
abraço !!!
Henrique Rodrigues
31/05/2009
Henrique Rodrigues
31/05/2009
begin IF OpenPictureDialog1.execute then Begin dbimage1.Picture.LoadFromFile(OpenPictureDialog1.filename); clipboard.Assign(DBImage1.picture); DBImage1.PasteFromClipboard; end; end;
Estou usando assim.
Em seguida no botão confirmar
begin dmreceitas.ClientDataSet1.Post; dmreceitas.ClientDataSet1.ApplyUpdates(-1); modalresult := -1; end;
Aí quando volta para o form anterior ele visualiza o que inseri, mas é fechar e abrir de novo, e já era. Se eu fizer o mesmo sem mexer na imagem, só os dados aí ele funciona.
Só falta isso e fazer a caixa de diálogo parar de abrir atrás dessa janela para eu entregar esse programa, estou batendo cabeça a dias em cima disso e não consigo nada.
Emerson Nascimento
31/05/2009
Henrique Rodrigues
31/05/2009
Henrique Rodrigues
31/05/2009
Emerson Nascimento
31/05/2009
IF OpenPictureDialog1.execute then dbimage1.Picture.LoadFromFile(OpenPictureDialog1.filename);
isso pra mim é um problema, pois no Delphi 7 e anteriores, fazendo desta forma a gravação SEMPRE será em BMP, não importando se você abriu uma imagem JPG, PNG, GIF ou seja lá qual padrão o dbimage aceitar ler. Ele lê vários, mas só grava BMP (para poder saber como fazer a leitura). pelo menos foi isso que eu consegui avaliar nos meus testes.
Os BMP geralmente ocupam muuuuito mais espaço em disco que um JPG. Mas muitos podem dizer: ´mas hoje a capacidade dos HD é muito grande e o custo é baixo´, etc, etc ... certo. E em conexões remotas, on-line? Um JPG é muito mais fácil de ser transportado.
Por isso há várias rotinas ensinando a transformar a imagem em JPG e gravá-la no banco de dados (porém não será possível usar o dbimage nesse caso, sendo necessário a manipulação de um TImage).
Pra facilitar o trabalho pode ser feito um componente herdado de dbimage que grave e leia JPG ao invés de BMP.
Henrique Rodrigues
31/05/2009
Emerson Nascimento
31/05/2009
Henrique Rodrigues
31/05/2009
Henrique Rodrigues
31/05/2009