
Gabriel Cabral
Membros-
Total de itens
406 -
Registro em
-
Última visita
Tudo que Gabriel Cabral postou
-
Chamar evento através de outro [condicional]
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
A questão é que eu preciso verificar se um campo foi alterado por isso estou usando o OnDataChange do datasource... tem alguma outra forma de fazer essa verificação??? -
Oi gente... assim... tenho o evento OnDataChange de um datasource nele, deve ser executada uma rotina se tal botão for clicado.. mas como eu faço isso?? eu fiz assim... procedure Tdm.dtsCadProDataChange(Sender: TObject; Field: TField); begin if frmCadPro.btnGravarClick(Sender) = True then begin if Field <> nil then begin if AnsiSameText(Field.FieldName, 'PRODES') then begin ShowMessage(' Gravou lá no ESTAPROA!!!'); dm.ESTAPROA.Edit; dm.ESTAPROAPROCOD.Value := frmCadPro.txtCadPro_CodPro.Text; dm.ESTAPROAPRODES.Value := frmCadPro.txtCadPro_Desc.Text; dm.ESTAPROAPROUND.Value := frmCadPro.txtCadPro_UndVen.Text; dm.ESTAPROAPROPRE.Value := StrToFloatDef(frmCadPro.txtCadPro_PreVen.Text,0); dm.ESTAPROAPROPOF.Value := StrToFloatDef(frmCadPro.txtCadPro_PreOfe.Text,0); dm.ESTAPROAPROIOF.Value := StrToDateTimeDef(frmCadPro.txtCadPro_DataIniOfe.Text,0); dm.ESTAPROAPRODOF.Value := StrToDateTimeDef(frmCadPro.txtCadPro_DataFinOfe.Text,0); dm.ESTAPROA.Post; end; end; end; end; Mas deu o erro: [DCC Error] U_dm.pas(452): E2008 Incompatible types na linha do If Como posso fazer??? Obrigado
-
(Resolvido) Edit receber SEMPRE o texto de outro edit
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
nossa.... no OnChange dá certo... achei que o OnChange era só quando digitava no Edit... enfim... vivendo e aprendendo ;D Muito obrigado pela atenção! -
(Resolvido) Edit receber SEMPRE o texto de outro edit
uma questão postou Gabriel Cabral Delphi, Kylix
Não sei como procurar isso, mas é assim.. eu preciso que a Edit1 receba SEMPRE o texto da Edit2 mesmo se a Edit2 mudar de valor e tal... tem como fazer isso sem ter que colocar em todos os eventos dos meus botoes com métodos .Fisrt, .Prior, .Next e .Last??? Como se fosse uma condição constante.. Obrigado -
Gente... to precisando bloquear o clique do mouse em um determinado DBEdit.. é possível?? Não é o caso de usar as propriedades Enabled ou ReadOnly no evento OnEnter.. é o caso mesmo de bloquear o próprio evento OnEnter e/ou e OnClick de certo DBEdit Se alguém souber ae.. Obrigado
-
(Resolvido) Problema de CAMPO FLOAT após CANCELAR um APPEND
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Boa, Daniel... aquele 0 [zero] ali no final é um valor substituto, caso o outro seja nulo?? funcionou aqui.. muito obrigado RESOLVIDO -
Bom dia, amigos... estou com um problema bem chato aqui... o tópico é longo por causa de uma parte do código, mas espero que possam ler e tentar me ajudar.. vou descrever na ordem em q as coisas acontecem... Em um cadastro, eu dou um Append na tabela dm.ESTAPRO procedure TfrmCadPro.btnNovoClick(Sender: TObject); begin dm.ESTAPRO.Append; dm.ESTAPRO.Open; end; Aí resolvo cancelar a inclusão, dando um Cancel na tabela dm.ESTAPRO procedure TfrmCadPro.btnCancelarClick(Sender: TObject); begin dm.ESTAPRO.Cancel; end; E depois disso, vou buscar um registro para altera-lo, dessa forma... procedure TfrmCodigo.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var auxcod: string; begin if (Key = VK_RETURN) Then begin if frmCodigo.Caption = 'WINSUPERM - ALTERAÇÃO' then begin for i:=1 to txtCodigo.MaxLength - length(txtCodigo.Text) do begin txtCodigo.Text := '0' + txtCodigo.Text; end; with dm.QueryBuscaPro do begin Close; SQL.Clear; SQL.Add('SELECT * FROM ESTAPRO.dbf'); SQL.Add('WHERE PROCOD = :pCOD'); ParambyName('pCOD').AsString := txtCodigo.Text; Open; if (IsEmpty) then begin Application.MessageBox('CÓDIGO INEXISTENTE!!! ','WINSUPERM', MB_ICONERROR); txtCodigo.SelectAll; end else begin auxcod := dm.QueryBuscaPro.FieldByName('PROCOD').AsString; if dm.ESTAPRO.Locate('PROCOD', auxcod, []) then begin if dm.ESTAPRO.FieldByName('PROCOD').IsNull = False then begin frmCadPro.txtCadPro_CodPro.Text := dm.ESTAPRO.FieldByName('PROCOD').Value; end; if dm.ESTAPRO.FieldByName('PRODES').IsNull = False then begin frmCadPro.txtCadPro_Desc.Text := dm.ESTAPRO.FieldByName('PRODES').Value; end; if dm.ESTAPRO.FieldByName('PROQTD').IsNull = False then begin frmCadPro.txtCadPro_Estoque.Text := dm.ESTAPRO.FieldByName('PROQTD').Value; frmCadPro.txtCadPro_Estoque.Text := FormatFloat('#,###,##0.000',StrToFloat(frmCadPro.txtCadPro_Estoque.Text)); end; if dm.ESTAPRO.FieldByName('PROICM').IsNull = False then begin frmCadPro.cboCadPro_Icms.Text := dm.ESTAPRO.FieldByName('PROICM').Value; frmCadPro.cboCadPro_Icms.Text := FormatFloat('#,###,##0.00',StrToFloat(frmCadPro.cboCadPro_Icms.Text)); end; end; end; end; frmCodigo.Close; frmCadPro.txtCadPro_Mode.Caption := 'MODO ALTERAÇÃO'; frmCadPro.txtCadPro_CodPro.SetFocus; dm.ESTAPRO.Edit; end; end; end; Acontece que se eu busco um registro que não possui nada no campo PROICM, ele acusa um erro dizendo ''' is not a valid floating point value.' e marca na busca a linha sublinhada: if dm.ESTAPRO.FieldByName('PROICM').IsNull = False then begin frmCadPro.cboCadPro_Icms.Text := dm.ESTAPRO.FieldByName('PROICM').Value; frmCadPro.cboCadPro_Icms.Text := FormatFloat('#,###,##0.00',StrToFloat(frmCadPro.cboCadPro_Icms.Text)); end; O que eu posso fazer pra consertar isso??? Muito obrigado
-
(Resolvido) Copiar tabela informando o caminho do executável
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Finalmente consegui.. DeleteFile(PChar(ExtractFilePath(Application.ExeName) + '\ESTAPROA.DBF')); CopyFile(PChar(ExtractFilePath(Application.ExeName) + '\ESTAPRO.DBF'), PChar(ExtractFilePath(Application.ExeName) + 'ESTAPROA.DBF'), False); Tem que ser False ao invés de True ali no terceiro parâmetro...pra poder sobrescrever.... não tinha percebido isso ¬¬ Mas me parece que surgiu uma outra questão aqui para copiar apenas alguns registros de uma tabela para outra... Continuo aqui ou abro outro tópico?? Muito obrigado a todos pela ajuda ;D -
(Resolvido) Copiar tabela informando o caminho do executável
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Coloquei desta forma, e o Mode está batAppendUpdate... dm.ESTAPRO.Post; dm.ESTAPRO.Active := False; dm.ESTAPRO.Exclusive := True; dm.ESTAPROA.Active := False; dm.ESTAPROA.Exclusive := True; frmCadPro.BatchMove1.Execute; Mas está dando a mensagem: Table is busy. -
(Resolvido) Copiar tabela informando o caminho do executável
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Mas preciso fazer essa cópia após cada modificação na tabela... ma falaram para usar o BatchMove... alguém conhece??? Eu informei ESTAPRO.DBF como Origem e ESTAPROA.DBF como Destino. Mas não sei exatamente o modo que tenho que utilizar... batAppend não é, pois esse duplica tudo.... mas é o único q funciona até agora... batAppendUpdate dá um erro dizendo: Destination must be indexed. Table. Não sei exatamente o que está havendo... -
(Resolvido) Copiar tabela informando o caminho do executável
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Mas aí é que está... eu não posso colocar c:\ porque em alguns clientes, o programa não está instalado no c:\ -
(Resolvido) Copiar tabela informando o caminho do executável
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Coloquei isso, mas ainda não funciona.. procedure TfrmCadPro.Button1Click(Sender: TObject); var buffer: array [0..255] of char; FileToFind: string; FileToFindA: string; begin dm.ESTAPRO.Active := False; dm.ESTAPROA.Active := False; GetWindowsDirectory(buffer, SizeOf(buffer)); FileToFind := FileSearch('ESTAPRO.DBF', ExtractFilePath(Application.ExeName) + ';' + buffer); FileToFindA := FileSearch('ESTAPROA.DBF', ExtractFilePath(Application.ExeName) + ';' + buffer); DeleteFile(PChar(ExtractFilePath(ParamStr(0)) + FileToFindA)); CopyFile(PChar(ExtractFilePath(ParamStr(0)) + FileToFind), PChar(ExtractFilePath(ParamStr(0)) + FileToFindA), True); end; Experimentei usar .Close; também, mas também não deu certo -
(Resolvido) Copiar tabela informando o caminho do executável
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Os arquivos foram encontrados, tanto ESTAPRO.DBF quanto ESTAPROA.DBF Mas ainda assim a deleção e cópia não estao sendo feitas :( Eu fiz um teste com arquivos texto e funcionou perfeitamente. DeleteFile(PChar(ExtractFileDir(ParamStr(0))+'\b.txt')); CopyFile(PChar(ExtractFileDir(ParamStr(0))+'\a.txt'), PChar(ExtractFileDir(ParamStr(0))+'\b.txt'), True); por que será, então, que com as tabelas .DBF isso não funciona??? Não funciona agora, porque quando eu informava o caminho exatamente com c:\... funcionava também -
(Resolvido) Copiar tabela informando o caminho do executável
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Ainda não deu nada :( -
(Resolvido) Copiar tabela informando o caminho do executável
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Não funcionou de nenhum dos dois jeitos.. continua não acontecendo nada com as tabelas :( -
Preciso copiar a tabela ESTAPRO.dbf e colar na mesma pasta com o nome ESTAPROA.dbf ambas deverão ficar na mesma pasta do executável. Funcionou quando eu fiz da seguinte maneira: DeleteFile('C:\winsuperm\ESTAPROA.DBF'); CopyFile('C:\winsuperm\ESTAPRO.DBF', 'C:\winsuperm\ESTAPROA.DBF', True); Mas preciso indicar o caminho do executável, pois é diferente em cada cliente.. então fiz da seguinte maneira: DeleteFile(PChar(ExtractFileDir(ParamStr(0))+'\ESTAPROA.DBF')); CopyFile(PChar(ExtractFileDir(ParamStr(0))+'\ESTAPRO.DBF'), PChar(ExtractFileDir(ParamStr(0))+'\ESTAPROA.DBF'), True); Só que desse jeito não funcionou.. não aconteceu nada... E essa também foi a única maneira que eu encontrei para fazer uma cópia renomeada da tabela, a cada modificação nela. alguém consegue me ajudar?? Muito obrigado.
-
(Resolvido) Soma Condicional no Rave Reports
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Muito obrigado, Jhonas.. como existem 4 maneiras diferentes no programa pra eu gerar o relatorio, eu estava testando a soma em um lugar errado... agora deu certo... muito obrigado mesmo e desculpe minha distração.. -
(Resolvido) Soma Condicional no Rave Reports
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Ok, Jonas.. obrigado... agora apareceu ZERO.. ou seja, não tem nada na query após a busca realizada mas esta mesma busca eu utilizo para gerar o relatório e funciona perfeitamente... o que pode estar havendo?? -
(Resolvido) Soma Condicional no Rave Reports
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Coloquei uma MessageBox pra verificar o RecordCount da Query... with dm.QueryRelCaixa do begin Close; SQL.Clear; SQL.Add('SELECT * FROM ESTACAI.dbf'); SQL.Add('WHERE CAIDAT BETWEEN :DataI AND :DataF'); SQL.Add('AND CAIHOR BETWEEN :HoraI AND :HoraF'); SQL.Add('AND CAINCX = :Ncaixa'); SQL.Add('AND CAIFLA = ""'); ParamByName('DataI') .AsDateTime := StrToDateTime(txtDataIni.Text); ParamByName('DataF') .AsDateTime := StrToDateTime(txtDataFin.Text); ParamByName('HoraI') .AsString := txtHoraIni.Text; ParamByName('HoraF') .AsString := txtHoraFin.Text; ParamByName('Ncaixa').AsString := txtNumCaixa.Text; Open; Application.MessageBox(PChar(dm.QueryRelCaixa.recordCount), 'RecordCount', mb_OK); end; Mas a MessageBox não retorna nada... aparece vazia.. não consigo entender porque a query fica vazia depois da consulta..porque não é pra ficar... existem registros dentro do que eu pedi.. Além disso, essa mesma busca é feita para gerar o relatório...e este é gerado corretamente. -
(Resolvido) Soma Condicional no Rave Reports
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Pois é... também já tinha achado q era isto... mas essa pesquisa é feita para gerar o relatorio... e este é gerado corretamente de acordo com a pesquisa.. então não tem porque a query estar vazia. -
(Resolvido) Soma Condicional no Rave Reports
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Entendi, William - TI...mas ele não faz a soma... quando passa por while not QueryRelCaixa.eof, acusa que a query.eof = true aí a soma dá sempre zero -
Estou a muito tempo tentando ajustar isso mas não consigo de jeito nenhum.. Eu uso uma query [QueryRelCaixa] para fazer uma busca e preencher o relatório. A busca é feita desta forma: with dm.QueryRelCaixa do begin Close; SQL.Clear; SQL.Add('SELECT * FROM ESTACAI.dbf'); SQL.Add('WHERE CAIDAT BETWEEN :DataI AND :DataF'); SQL.Add('AND CAIHOR BETWEEN :HoraI AND :HoraF'); SQL.Add('AND CAINCX = :Ncaixa'); SQL.Add('AND CAIFLA = ""'); ParamByName('DataI') .AsDateTime := StrToDateTime(txtDataIni.Text); ParamByName('DataF') .AsDateTime := StrToDateTime(txtDataFin.Text); ParamByName('HoraI') .AsString := txtHoraIni.Text; ParamByName('HoraF') .AsString := txtHoraFin.Text; ParamByName('Ncaixa').AsString := txtNumCaixa.Text; Open; end; Mas além disso, preciso calcular a soma dos valores de CAIENT quando CAIDIN = 'X' e isso é feito já em uma outra Region do Rave Reports. Com a função SUM() do Rave não é possível, porque dessa forma ele faz a somatória de todos os registros, independente da primeira busca realizada. Alguém pode me salvar??? Muito obrigado.
-
Relatório entre datas e condicional
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
totalDin é uma variável do tipo real dentro da procedure... na instrução, totalDin é o alias.. a minha intenção é que essa variável receba o valor do alias porque depois eu passo o valor da variável por parâmetro para o Rave Reports -
Relatório entre datas e condicional
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Fiz isso, Jhonas, mas continua a mesma coisa... Parece que o erro se dá devido ao SELECT SUM(CAIENT) AS totalDin FROM ESTACAI Porque eu troquei por SELECT * FROM ESTACAI e não deu erro algum...e a consulta foi feita... Queria saber se a atribuição do resultado à variável está correta.. totalDin := dm.QueryRelCaixa['totalDin']; Pois isso tambem pode estar errado... Alguma sugestão??! -
Relatório entre datas e condicional
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Mas o CAIDAT é sim um campo da tabela ESTACAI Eu adicionei todos os campos de ESTACAI na QueryRelCaixa Ele diz que não encontrou o CAIDAT porque ele é o primeiro dos campos na query... Se eu trocar na query e colocar o CAIENT primeiro, ele vai acusar que o CAIENT não foi encontrado... Parece que não é um erro específico do campo....e sim da query