Ir para conteúdo
Fórum Script Brasil

robinhocne

Membros
  • Total de itens

    854
  • Registro em

  • Última visita

Tudo que robinhocne postou

  1. Boa Noite Pessoal, Estou tentando fazer assim; No DbGrid1 eu tenho os seguintes registros retornados do banco Formulario Descricao PESCAD001 Cadastro de Pessoas PROCAD006 Cadastro de Produtos Ai no DbGrid2 eu tenho os seguintes campos Operacao Descricao Formulario 001 Vendas PESCAD001 002 Troca PESCAD001 002 Troca PROCAD006 003 Condicional PROCAD006 Então quando clicar no registro do dbgrid1 queria que os registros que fosse corresponde ao fomulario que clicou no dbgrid1 ele fique em vemelhor o nome. tentei fazer assim..... if dbgrid1.Fields[0].AsString = dbgrid2.Fields[2].AsString then begin dbgrid2.Canvas.Font.Color:= clRed; end; dbgrid2.Canvas.FillRect(Rect); dbgrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State); mas ai ele fica vermelho smente quando pesquisa o formulário.
  2. No Banco de dados eu tenho o campo MovEntradaSaida, onde que E = Entrada e S = Saida; Quando faço uma consulta no banco de dados with QryBusca do begin close; sql.Clear; sql.Add(Instrucao); open; end; E mostro o Resulta num DbGrid ela traz assim; MovCodigo MovDescricao MovEntradaSaida 01 VENDA S 02 COMPRA E 03 CONDICIONAL S em vez de mostra no DbGrid como S eu queria que mostrasse como Saida e ao invés de E mostrasse Entrada; já tentei colocar no After Scroll da Query procedure TFAdmPes007.QryBuscaAfterScroll(DataSet: TDataSet); begin if QryBusca.FieldValues['MovEntradaSaida'] = 'S' then begin QryBusca.DisplayFormat := 'Saida'; end else begin QryBusca.DisplayFormat := 'Entrada'; end; end; mas dá certo....
  3. Eu utilizo quase assim, mas é no Delphi 7 e Firebird 2.0, mas o que faço e sempre deixar conectado o banco e ai uso a Query para fazer os Ups, Inserts, Selects e ects.... Tive esse problema de inicio, mas é bem facil, no botão novo registro eu também sempre busco o ultimo codigo para informar o registro, mas antes de salvar eu faço ele busca de novo só para garantir que alguém em rede já tenha salvo, se não vai zicar tudo mesmo...... abraços
  4. Isso eu sei fazer amigo, estou dizendo que na minha consulta na Query retorna no campo MovEntradaSaida como E para Entrada e S para Saida.....como mostra no Grid não lembro se o tratamento faz no Grid ou Query, pois se retorna do meu bando E eu quero que fica como Entrada e se me retorna S quero que fica como Saida
  5. Em um DbGrid eu tenho uma coluna que recebe o valor de uma Query do Banco chamado (MovEntradaSaida) onde me retorna como E de Entrada ou S de Saida, então o que eu queria é que quando retornasse E podesse mostrar como Entrada e S mostrar como Saida, como faço isso ?
  6. Legal esse exemplo, mas fiz assim....joguei o campo Valor como String na tabela temporaria ai fiz assim: if DbgCambio.SelectedIndex = 02 then begin if TblCamPara.AsString = 'GUARANI' then begin TblCamValor.AsString := FormatFloat('###,###,##0', TblCamValor.AsCurrency); end else if TblCamPara.AsString = 'DOLAR' then begin TblCamValor.AsString := FormatFloat('###,###,##0.0000', TblCamValor.AsCurrency); end else if TblCamPara.AsString = 'REAL' then begin TblCamValor.AsString := FormatFloat('###,###,##0.00', TblCamValor.AsCurrency); end else if TblCamPara.AsString = 'CARTÃO' then begin TblCamValor.AsString := FormatFloat('###,###,##0', TblCamValor.AsCurrency); end else if TblCamPara.AsString = 'PESO' then begin TblCamValor.AsString := FormatFloat('###,###,##0.0000', TblCamValor.AsCurrency); end; end; Uma Gambi mas deu certo..... valeu Jhonas mais uma vez......abracos
  7. mas o problema que ele fica em um loop que dá pra ver a tela piscando......
  8. Consegui resolver........ufa...... ficou assim: with Dtm.QryProcedimentos do begin close; sql.Clear; sql.Add('Select F.ProCodigo, F.PrfValor, F.PrfProcedimento, F.PrfFormulario, E.ProCodigo, E.EpdValor, E.EmpCodigo'); sql.Add(' From Adm_Proced_Formularios F left Outer Join Adm_Proced_Empresa E ON F.ProCodigo = E.ProCodigo and E.EmpCodigo =:Emp'); sql.Add(' where F.PrfFormulario =:For'); ParamByName('For').AsString := Formulario; ParamByName('Emp').AsString := PRI_EmpCodigo; open; end; valeu Jhonas pela ajuda Só Mais uma pergunta..........Queria saber qual processo pesa mais ? Eu consegui fazer essa consulta de duas maneiras....... 1ª Coloquei uma tabela temporária no DataModule e ai quando eu entrou no formulario pesquiso os Procedimentos e coloco na tabela temporaria, mas para que eu possa pesquisar o procedimento eu usei o Locate na Tabela temporária, abaixo como fica: procedure TFPesCad001.Procedimentos; begin Formulario := 'PESCAD001'; with Dtm.QryProcedimentos do begin close; sql.Clear; sql.Add('Select F.ProCodigo, F.PrfValor, F.PrfProcedimento, F.PrfFormulario, E.ProCodigo, E.EpdValor, E.EmpCodigo'); sql.Add(' From Adm_Proced_Formularios F left Outer Join Adm_Proced_Empresa E ON F.ProCodigo = E.ProCodigo and E.EmpCodigo =:Emp'); sql.Add(' where F.PrfFormulario =:For'); ParamByName('For').AsString := Formulario; ParamByName('Emp').AsString := PRI_EmpCodigo; open; end; Dtm.TblProced.Close; Dtm.TblProced.Active := true; while not Dtm.QryProcedimentos.Eof do begin with Dtm.TblProced do begin insert; Dtm.TblProcedProCodigo.AsString := Dtm.QryProcedimentos.FieldByName('ProCodigo').AsString; Dtm.TblProcedProcedimento.AsString := Dtm.QryProcedimentos.FieldByName('PrfProcedimento').AsString; Dtm.TblProcedEmpresa.AsString := Dtm.QryProcedimentos.FieldByName('EmpCodigo').AsString; Dtm.TblProcedPrfValor.AsString := Dtm.QryProcedimentos.FieldByName('PrfValor').AsString; Dtm.TblProcedEpdValor.AsString := Dtm.QryProcedimentos.FieldByName('EpdValor').AsString; post; end; Dtm.QryProcedimentos.Next; end; if Dtm.TblProced.Locate('Procedimento','PES_TP_CAD_PESSOA',[loPartialKey]) then begin if Dtm.TblProcedEpdValor.AsString <> '' then begin PES_TP_CAD_PESSOA := Dtm.TblProcedEpdValor.AsString; end else begin PES_TP_CAD_PESSOA := Dtm.TblProcedPrfValor.AsString; end; end; if Dtm.TblProced.Locate('Procedimento','PES_OBG_DOCUMENTO',[loPartialKey]) then begin if Dtm.TblProcedEpdValor.AsString <> '' then begin PES_OBG_DOCUMENTO := Dtm.TblProcedEpdValor.AsString; end else begin PES_OBG_DOCUMENTO := Dtm.TblProcedPrfValor.AsString; end; end; if Dtm.TblProced.Locate('Procedimento','PES_OBG_CPF',[loPartialKey]) then begin if Dtm.TblProcedEpdValor.AsString <> '' then begin PES_OBG_CPF := Dtm.TblProcedEpdValor.AsString; end else begin PES_OBG_CPF := Dtm.TblProcedPrfValor.AsString; end; end; if Dtm.TblProced.Locate('Procedimento','PES_OBG_CNPJ',[loPartialKey]) then begin if Dtm.TblProcedEpdValor.AsString <> '' then begin PES_OBG_CNPJ := Dtm.TblProcedEpdValor.AsString; end else begin PES_OBG_CNPJ := Dtm.TblProcedPrfValor.AsString; end; end; if Dtm.TblProced.Locate('Procedimento','PES_OBG_IE_REG',[loPartialKey]) then begin if Dtm.TblProcedEpdValor.AsString <> '' then begin PES_OBG_IE_REG := Dtm.TblProcedEpdValor.AsString; end else begin PES_OBG_IE_REG := Dtm.TblProcedPrfValor.AsString; end; end; if Dtm.TblProced.Locate('Procedimento','PES_OBG_END',[loPartialKey]) then begin if Dtm.TblProcedEpdValor.AsString <> '' then begin PES_OBG_END := Dtm.TblProcedEpdValor.AsString; end else begin PES_OBG_END := Dtm.TblProcedPrfValor.AsString; end; end; if Dtm.TblProced.Locate('Procedimento','ADM_PAIS_PADRAO',[loPartialKey]) then begin if Dtm.TblProcedEpdValor.AsString <> '' then begin ADM_PAIS_PADRAO := Dtm.TblProcedEpdValor.AsString; end else begin ADM_PAIS_PADRAO := Dtm.TblProcedPrfValor.AsString; end; end; end; ou dessa maneira que deixei em outro formulario, pesquiso os procedimentos e verifico linha a linha do resultando dentro do while para pegar o resultado do PrfValor(Padrão) ou EpdValor(Configurado). procedure TFProCad001.Procedimentos; begin Formulario := 'PROCAD001'; with Dtm.QryProcedimentos do begin close; sql.Clear; sql.Add('Select * From Adm_Proced_Formularios PF, Adm_Proced_Empresa PE where PF.ProCodigo = PE.ProCodigo'); sql.Add('and PE.EmpCodigo =:Emp and PF.PrfFormulario =:For'); ParamByName('Emp').AsString := PRI_EmpCodigo; ParamByName('For').AsString := Formulario; open; end; while not Dtm.QryProcedimentos.Eof do begin if Dtm.QryProcedimentos.FieldByName('PrfProcedimento').AsString = 'PRO_FAT_SEM_ESTOQUE' then begin if Dtm.QryProcedimentos.FieldByName('EpdValor').AsString = '' then begin PRO_FAT_SEM_ESTOQUE := Dtm.QryProcedimentos.FieldByName('PrfValor').AsString; end else begin PRO_FAT_SEM_ESTOQUE := Dtm.QryProcedimentos.FieldByName('EpdValor').AsString; end; end else if Dtm.QryProcedimentos.FieldByName('PrfProcedimento').AsString = 'PRO_CON_QTD_METROS' then begin if Dtm.QryProcedimentos.FieldByName('EpdValor').AsString = '' then begin PRO_CON_QTD_METROS := Dtm.QryProcedimentos.FieldByName('PrfValor').AsString; end else begin PRO_CON_QTD_METROS := Dtm.QryProcedimentos.FieldByName('EpdValor').AsString; end; end else if Dtm.QryProcedimentos.FieldByName('PrfProcedimento').AsString = 'PRO_TP_PRODUTO' then begin if Dtm.QryProcedimentos.FieldByName('EpdValor').AsString = '' then begin PRO_TP_PRODUTO := Dtm.QryProcedimentos.FieldByName('PrfValor').AsString; end else begin PRO_TP_PRODUTO := Dtm.QryProcedimentos.FieldByName('EpdValor').AsString; end; end else if Dtm.QryProcedimentos.FieldByName('PrfProcedimento').AsString = 'PRO_BLOQ_TP_PRODUTO' then begin if Dtm.QryProcedimentos.FieldByName('EpdValor').AsString = '' then begin PRO_BLOQ_TP_PRODUTO := Dtm.QryProcedimentos.FieldByName('PrfValor').AsString; end else begin PRO_BLOQ_TP_PRODUTO := Dtm.QryProcedimentos.FieldByName('EpdValor').AsString; end; end else if Dtm.QryProcedimentos.FieldByName('PrfProcedimento').AsString = 'PRD_MOEDA_PADRAO' then begin if Dtm.QryProcedimentos.FieldByName('EpdValor').AsString = '' then begin PRD_MOEDA_PADRAO := Dtm.QryProcedimentos.FieldByName('PrfValor').AsString; end else begin MoedaPadrao := Dtm.QryProcedimentos.FieldByName('PrfValor').AsString; PRD_MOEDA_PADRAO := Dtm.QryProcedimentos.FieldByName('EpdValor').AsString; end; end else if Dtm.QryProcedimentos.FieldByName('PrfProcedimento').AsString = 'PRD_ESPECIE_PADRAO' then begin if Dtm.QryProcedimentos.FieldByName('EpdValor').AsString = '' then begin PRD_ESPECIE_PADRAO := Dtm.QryProcedimentos.FieldByName('PrfValor').AsString; end else begin PRD_ESPECIE_PADRAO := Dtm.QryProcedimentos.FieldByName('EpdValor').AsString; end; end else if Dtm.QryProcedimentos.FieldByName('PrfProcedimento').AsString = 'ADM_EMPRESA_LOGADA' then begin if Dtm.QryProcedimentos.FieldByName('EpdValor').AsString = '' then begin ADM_EMPRESA_LOGADA := Dtm.QryProcedimentos.FieldByName('PrfValor').AsString; end else begin ADM_EMPRESA_LOGADA := Dtm.QryProcedimentos.FieldByName('EpdValor').AsString; end; end else if Dtm.QryProcedimentos.FieldByName('PrfProcedimento').AsString = 'PRD_QTD_CARACT_DESC_ETIQ' then begin if Dtm.QryProcedimentos.FieldByName('EpdValor').AsString = '' then begin PRD_QTD_CARACT_DESC_ETIQ := Dtm.QryProcedimentos.FieldByName('PrfValor').AsInteger; end else begin PRD_QTD_CARACT_DESC_ETIQ := Dtm.QryProcedimentos.FieldByName('EpdValor').AsInteger; end; end else if Dtm.QryProcedimentos.FieldByName('PrfProcedimento').AsString = 'PRD_EMPRESA_PRD' then begin if Dtm.QryProcedimentos.FieldByName('EpdValor').AsString = '' then begin PRD_EMPRESA_PRD := Dtm.QryProcedimentos.FieldByName('PrfValor').AsString; end else begin PRD_EMPRESA_PRD := Dtm.QryProcedimentos.FieldByName('EpdValor').AsString; end; end else if Dtm.QryProcedimentos.FieldByName('PrfProcedimento').AsString = 'PRD_SEQ_CODBARRA' then begin if Dtm.QryProcedimentos.FieldByName('EpdValor').AsString = '' then begin PRD_SEQ_CODBARRA := Dtm.QryProcedimentos.FieldByName('PrfValor').AsString; end else begin PRD_SEQ_CODBARRA := Dtm.QryProcedimentos.FieldByName('EpdValor').AsString; end; end; Dtm.QryProcedimentos.Next; end; Dtm.QryProcedimentos.Close; end; Qual fica melhor para usar no sistema em questão de desempenho ou de travar ?
  9. ai não ficaria legal.....tinah que ser em linha...... Então para solucionar como faço para validar assim......mesmo que eu digite quando for de Real para Guarani assim 2500,00 ai assim que ele for digitar o virguala o sistema não aceitar
  10. está sim..... Formulario := 'PESCAD001'; // Só Busca os Procedimentos do PESCAD001 with Dtm.QryProcedimentos do begin close; sql.Clear; sql.Add('Select F.ProCodigo, F.PrfValor, F.PrfProcedimento, F.PrfFormulario, E.ProCodigo, E.EpdValor, E.EmpCodigo'); sql.Add(' From Adm_Proced_Formularios F left Outer Join Adm_Proced_Empresa E ON F.ProCodigo = E.ProCodigo and'); sql.Add(' F.PrfFormulario =:For and E.EmpCodigo =:Emp'); ParamByName('For').AsString := Formulario; << formulario só PESCAD001 ParamByName('Emp').AsString := PRI_EmpCodigo; << Empresa Logada open; end; e traz... PROCODIGO PRFVALOR PRFPROCEDIMENTO PRFFORMULARIO PROCODIGO1 EPDVALOR EMPCODIGO 12 P PRO_PES_TP_PRODUTO PROPES001 << não é para trazer 15 1 PRD_PRECO_PADRAO PROPES001<< não é para trazer 13 1 ADM_PAIS_PADRAO INNCAD004<< não é para trazer 17 PRD_ESPECIE_PADRAO PROCAD001<< não é para trazer 18 N ADM_EMPRESA_LOGADA PROCAD001<< não é para trazer 16 R;D PRD_MOEDA_PADRAO PROCAD001<< não é para trazer 20 PRD_EMPRESAS_PRD PROPES001<< não é para trazer 19 300 PRD_QTD_CARACT_DESC_ETIQ PROCAD001<< não é para trazer 21 PRD_SEQ_CODBARRA PROCAD001<< não é para trazer 1 CLI PES_TP_CAD_PESSOA PESCAD001 1 1 2 N PES_OBG_DOCUMENTO PESCAD001 3 N PES_OBG_CPF PESCAD001 3 S 1 4 N PES_OBG_CNPJ PESCAD001 5 N PES_OBG_IE_REG PESCAD001 6 N PES_OBG_END PESCAD001 13 1 ADM_PAIS_PADRAO PESCAD001 13 1 1 7 S PRO_CON_TAM_COR PROCAD001<< não é para trazer ................................ tem que trazer assim....só do PESCAD001 PROCODIGO PRFVALOR PRFPROCEDIMENTO PRFFORMULARIO PROCODIGO1 EPDVALOR EMPCODIGO 1 CLI PES_TP_CAD_PESSOA PESCAD001 1 1 2 N PES_OBG_DOCUMENTO PESCAD001 3 N PES_OBG_CPF PESCAD001 3 S 1 4 N PES_OBG_CNPJ PESCAD001 5 N PES_OBG_IE_REG PESCAD001 6 N PES_OBG_END PESCAD001 13 1 ADM_PAIS_PADRAO PESCAD001 13 1 1
  11. Mas esses campos: Select F.ProCodigo, F.PrfValor, F.PrfProcedimento, F.PrfFormulario, E.ProCodigo, E.EpdValor, E.EmpCodigo eu preciso ver, só não estou conseguindo entender porq não respeita o filtro sql.Add(' F.PrfFormulario =:For....'); ParamByName('For').AsString := Formulario;
  12. Então não deu certo não fiz para cada vezes que sair da coluna valor, ver qual a moeda que está no Field 2 para mostrar o fomarto, mas como cada linha é uma moeda diferente e mascara diferente ai só aceita uma, tipo se mando guarani antes....ele fica sem as casas decimais depois da virtgula (do jeito que quero), mas quando coloco de Dolar para Real 1,68 e passo por ele ....ai arredonda para 2, estou encaminhando uma imagem de como fica: coloquei esse código no BeforeScroll do TIBCDataSource BeforeOpen, BeforePost no after também, mas nada deu; procedure TFAdmCad004.TblCamBeforePost(DataSet: TDataSet); begin inherited; if DbgCambio.Fields[01].AsString = 'GUARANI' then begin TblCamValor.DisplayFormat := '###,###,##0'; end else if DbgCambio.Fields[01].AsString = 'REAL' then begin TblCamValor.DisplayFormat := '###,###,##0.0000'; end; end; eu guardo numa tabela temporária
  13. obrigado pela ajuda, mas estou tentando e não consegui achar.... valeu
  14. Muito obrigado Jhonas, mas tive um erro crucial que esqueci de comentar....só um detalhe......tinha que ser um banco de dados do paraguay :blush:
  15. Agora deu nó na minha cabeça.....as vezes seja a hora..... Bom não estou conseguindo saber resolver...... Tenho duas Tabelas (Adm_Proced_Formularios) onde fica gravado o procedimento para o determinado formulário e tenho a tabela (Adm_Proced_Empresa) que são a liberação do procedimento que está no Adm_Proced_Formularios por empresa. Ai to tentando fazer uma consulta nele assim....pegando o que tenho no Adm_Proced_Formularios filtrando somente de um formulario e empresa e fazendo um Inner Join com o Adm_Proced_Empresa, porque ai caso não tenha nesse o valor na coluna EpdValor do Adm_Proced_Empresa eu pego do campo PrfValor da tabela Adm_Proced_Formularios, porem mesmo eu colocando um filtro para pegar só daquele formulario e da empresa mostra tudo..... aglém pode dar uma ajuda ? o codigo que estava tentando é esse abaixo Formulario := 'PESCAD001'; with Dtm.QryProcedimentos do begin close; sql.Clear; sql.Add('Select F.ProCodigo, F.PrfValor, F.PrfProcedimento, F.PrfFormulario, E.ProCodigo, E.EpdValor, E.EmpCodigo'); sql.Add(' From Adm_Proced_Formularios F left Outer Join Adm_Proced_Empresa E ON F.ProCodigo = E.ProCodigo and'); sql.Add(' F.PrfFormulario =:For and E.EmpCodigo =:Emp'); ParamByName('For').AsString := Formulario; ParamByName('Emp').AsString := PRI_EmpCodigo; open; end; o resultado traz assim PROCODIGO PRFVALOR PRFPROCEDIMENTO PRFFORMULARIO PROCODIGO1 EPDVALOR EMPCODIGO 12 P PRO_PES_TP_PRODUTO PROPES001 15 1 PRD_PRECO_PADRAO PROPES001 13 1 ADM_PAIS_PADRAO INNCAD004 17 PRD_ESPECIE_PADRAO PROCAD001 18 N ADM_EMPRESA_LOGADA PROCAD001 16 R;D PRD_MOEDA_PADRAO PROCAD001 20 PRD_EMPRESAS_PRD PROPES001 19 300 PRD_QTD_CARACT_DESC_ETIQ PROCAD001 21 PRD_SEQ_CODBARRA PROCAD001 1 CLI PES_TP_CAD_PESSOA PESCAD001 1 1 2 N PES_OBG_DOCUMENTO PESCAD001 3 N PES_OBG_CPF PESCAD001 3 S 1 4 N PES_OBG_CNPJ PESCAD001 5 N PES_OBG_IE_REG PESCAD001 6 N PES_OBG_END PESCAD001 13 1 ADM_PAIS_PADRAO PESCAD001 13 1 1 7 S PRO_CON_TAM_COR PROCAD001 8 S PRO_BLOQ_TP_PRODUTO PROCAD001 9 N PRO_FAT_SEM_ESTOQUE PROCAD001 10 Q PRO_CON_QTD_METROS PROCAD001 11 P PRO_TP_PRODUTO PROCAD001 12 P PRO_PES_TP_PRODUTO PROCAD001 e tinha que trazer assim PROCODIGO PRFVALOR PRFPROCEDIMENTO PRFFORMULARIO PROCODIGO1 EPDVALOR EMPCODIGO 1 CLI PES_TP_CAD_PESSOA PESCAD001 1 1 2 N PES_OBG_DOCUMENTO PESCAD001 3 N PES_OBG_CPF PESCAD001 3 S 1 4 N PES_OBG_CNPJ PESCAD001 5 N PES_OBG_IE_REG PESCAD001 6 N PES_OBG_END PESCAD001 13 1 ADM_PAIS_PADRAO PESCAD001 13 1 1
  16. não consegui abrir não.....tentei abrir com o acess mas dá erro e aparece umas tabelas corrompidas
  17. Estou precisando de um banco de dados com todos os produtos de farmácia cadastrado, alguém tem ai ?
  18. Em um DbGrid ligado a uma tabela temporária (RxMemoryData) eu tenho o campo Valor to tipo Currency e um campo Moeda do tipo String e ai no mesmo DbGrid posso ter moedas diferentes tipo, Dolar, Real, Guarani etc, porém tipo o guarani eu não quero que o usuario digite nada apos a virgula quero que utilize o valor sem virgula, para o Real nosso formato mesmo e o Dolar a mesma coisa como posso estar fazendo para cada linha dependendo da moeda ?
  19. Como eu posso evitar que não de mais esse erro ? e como em vez de dar erro eu posso dar uma mensagem ?
  20. Olá pessoal, estou com 20% do projeto pronto, quer dizer então no inicio e estou tomando alguns cuidados para ficar melhor o desempenho e para não ter erros, mas ultimamente não muito especifico, mas geralmente encontro em um formulário só, pelo que eu percebi! Mas só que tem hora que vai numa beleza e depois vou acessar de novo ai dá um erro, entro de novo e ele vai ou dá erro de novo o erro está abaixo: Em um DbGrid no Formulário AdmHelp ao dar um duplo click eu abro o formulário InnCad003 (Procedimentos do Formulário) e então quando eu vou abrir que dá o erro, as vezes sim ou as vezes não.....já debuguei e não estou conseguindo encontrar.....alguém me ajuda ? Abaixo o codigo que verifico e abre o formulario InnCad003 procedure TFAdmHelp.DbgProcDblClick(Sender: TObject); begin if PRI_Privilegio = 'PADRÃO' then begin ConsultaFormLibUsuario('INNCAD003'); if Dtm.QryUsuarios.RecordCount = 0 then begin ShowMessage('Usuário '+PRI_UsuCodigo+' - '+PRI_UsuNome+' sem Nivel de acesso ao Formulário INNCAD003 - Pesquisa de Procedimentos !'); exit; end; end; with TFInnCad003.Create(Application) do begin try ProCodigo := TblProProCodigo.AsString; PrfFormulario := Formulario; LeRegistro; SpbEdi.Enabled := true; spbpes.Visible := false; SpbCan.Visible := false; SpbEdiClick(Self); ShowModal; Atualiza; finally; FreeAndNil(FInnCad003); end; end; end; e Quando eu abro o InnCad003 antes de mais nada no OnActive eu verifico esse procedimento abaixo: procedure TFInnCad003.LeRegistro; begin TblPro.Close; TblPro.Active := true; with Dtm.QryProcedimentos do begin close; sql.Clear; sql.Add('Select * From Adm_Procedimentos P, Adm_Proced_Formularios F where P.ProCodigo = F.ProCodigo and F.PrfFormulario =:For and P.ProCodigo =:ProCod'); ParamByName('For').AsString := PrfFormulario; ParamByName('ProCod').AsString := ProCodigo; open; end; ProCodigo := Dtm.QryProcedimentos.FieldByName('ProCodigo').AsString; TxtPro.Text := Dtm.QryProcedimentos.FieldByName('PrfProcedimento').AsString; TxtFor.Text := Dtm.QryProcedimentos.FieldByName('PrfFormulario').AsString; TxtMod.Text := Dtm.QryProcedimentos.FieldByName('ProModulo').AsString; Mem.Text := Dtm.QryProcedimentos.FieldByName('ProDescricao').AsString; TxtVal.Text := Dtm.QryProcedimentos.FieldByName('ProValor').AsString; if Dtm.QryProcedimentos.FieldByName('ProObrigatorio').AsString = 'S' then begin RdbSim.Checked := true; end else begin RdbNao.Checked := true; end; if PRI_EmpTeste = 'S' then begin with Dtm.QryEmpresa do begin close; sql.Clear; sql.Add('Select * From Adm_Empresas'); open; end; end else begin with Dtm.QryEmpresa do begin close; sql.Clear; sql.Add('Select * From Adm_Empresas where EmpTeste =:Emp'); ParamByName('Emp').AsString := 'N'; open; end; end; while not Dtm.QryEmpresa.Eof do begin with Dtm.QryProcedimentos do begin close; sql.Clear; sql.Add('Select * From Adm_Proced_Empresa where EmpCodigo =:Emp and ProCodigo =:Pro and PrfFormulario =:For'); ParamByName('Emp').AsString := Dtm.QryEmpresa.FieldByName('EmpCodigo').AsString; ParamByName('Pro').AsString := ProCodigo; ParamByName('For').AsString := TxtFor.Text; open; end; with TblPro do begin Insert; TblProControle.AsString := Dtm.QryEmpresa.FieldByName('EmpControle').AsString; TblProEpdCodigo.AsString := Dtm.QryProcedimentos.FieldByName('EpdCodigo').AsString; TblProEmpresa.AsString := Dtm.QryEmpresa.FieldByName('EmpCodigo').AsString; TblProValor.AsString := Dtm.QryProcedimentos.FieldByName('EpdValor').AsString; TblProUsuario.AsString := Dtm.QryProcedimentos.FieldByName('EpdUsuario').AsString; post; end; Dtm.QryEmpresa.Next; end; TblPro.SortOnFields('Controle', true, false); Dtm.QryProcedimentos.Close; TblPro.First; DbgPro.SelectedIndex := 2; end;
  21. Consegui resolver com Ajuda de um amigo com uma função function ExisteSpeedButton(AButtonName: String): boolean; var lButton : TComponent; begin Result := False; lButton := FrmPrincipal.FindComponent(AButtonName); Result := lButton <> nil; end; Então na hora de ver os Atalhos com a função verifico se esse botão existe e ai passo a imagem, caso não existe fica sem imagem. if ExisteSpeedButton(Dtm.QryAtalhos.FieldByName('AtlFormulario').AsString) then begin TSpeedButton(FindComponent('TF' + Dtm.QryAtalhos.FieldByName('AtlFormulario').AsString)).Glyph := TSpeedButton(FindComponent(Dtm.QryAtalhos.FieldByName('AtlFormulario').AsString)).Glyph; end;
  22. Poderia pesquisar umas apostilas no google, videos aulas no you tube, pega umas ideias de um sistema para você fazer para ir aprendendo.
  23. Sim ele tem que variar...... Porque eu faço assim...... Verifico se o Atalho vai ser igual ao botão de um menu, porque se ele for igual vai pegar a imagem do botão do menu se não for ele vai ficar sem imagem, mas acontece que quando tem o atalho e não o botão de menu ele dá erro.
×
×
  • Criar Novo...