Ir para conteúdo
Fórum Script Brasil

robinhocne

Membros
  • Total de itens

    854
  • Registro em

  • Última visita

Tudo que robinhocne postou

  1. Dessa maneira não dá certo também, porque o IzaCfc.exe não está na pasta C:\IzaCfc...mas consegui resolver fazendo uma copia para a pasta IzaCfc e depois de zipar eu apago.....valeu pela ajuda....
  2. Isso funciona quando o executavel está no C: e se o excutavel estiver dentro por exemplo C:\winrar\teste.exe ao zipar ele vai ficar dentro de uma pasta winrar..... desse jeito não funciona
  3. Estou zipando um executavel com esse caminho abaixo no winrar Caminho := 'C:\IzaCfc\IzaCfc.rar'; LinhadeComando :='C:\Arquivos de programas\WinRAR\WINRAR.EXE a "'+Caminho+'" "C:\IzaCfc\IzaSis\IzaCfc.exe"'; try WinExec(Pchar(LinhadeComando),1); except end; mas ai no Winrar ele compacta o IzaCfc.exe dentro da pasta IzaCfc\IzaSis eu queria que fiza no raiz do IzaCfc, tipo abrir o arquivo IzaCfc.rar e já está o IzaCfc.exe ali...sem esta nas pastas. como faço isso ?
  4. Pessoal......tava querendo travar a primeira coluna do DbGrid, tipo assim.......em tenho N colunas e quando clicar na barra de rolagem para ver as outras colunas ai ficar travada a primeira para eu saber de qual registro é aquela linha.... tem como ?
  5. Tenho uma tabela temporaria(TblPes) onde trago algumas informações e um campo chamado "Seleciona" onde informo S e N, então tenho o código abaixo para no evento OnCellClick do DbGrid, onde verifico se o Field selecionado e passo o valor de S para N ou de N para S. procedure TFrmPesCidade.DbgPesCellClick(Column: TColumn); begin if DbgPes.SelectedField = TblPesSeleciona then begin if TblPesSeleciona.AsString = 'S' then begin TblPes.Edit; TblPesSeleciona.AsString := 'N' end else begin TblPes.Edit; TblPesSeleciona.AsString := 'S'; end; end; end; e para preencher o campo no DbGrid com o checkbox eu utilizo um ImageLIst conforme abaixo: if Column.Field = TblPesSeleciona then begin DbgPes.Canvas.FillRect(Rect); if (TblPesSeleciona.AsString = 'S') then begin ImageList1.Draw(DbgPes.Canvas,Rect.left +1,rect.top+1,1) end else if (TblPesSeleciona.AsString = 'N') then begin ImageList1.Draw(DbgPes.Canvas,Rect.left +1,rect.top+1,0); end; end; Então quando eu clico ele muda para N onde mostra a caixa limpa e depois clico novamente para mudar para S e ai mostra a caixa marcada com outra imagem, o meu problema é que tem hora que não aparece a caixa e aparece a letra, onde também deixa até apagar, como faço para resolver isso ?
  6. Esta operação não é definida para tabelas do sistema actualização mal sucedida dos metadata. STORE RDB$PROCEDURE_PARAMETERS falhou. tente armazenar o valor duplicado (visível às transações ativas) em um unico indice "RDB$INDEX_18". abraço Consegui resolver : CREATE PROCEDURE P_PRD_ENTRADAS_ATUQTVLTOTAL ( vempcodigo integer, ventcodigo integer, ventdata date, ventqtdtotal numeric(10,4), ventvltotalprod numeric(10,6), ventvltotentrada numeric(10,6)) as begin Update Prd_Entradas Set EntQtdTotal = :vEntQtdTotal, EntVlTotalProd = :vEntVlTotalProd, EntVlTotEntrada = :vEntVlTotEntrada where EmpCodigo = :vEmpCodigo and EntCodigo = :vEntCodigo and EntData = :vEntData; end
  7. Pessoal não sei se alguém ai pode me ajudar.....mas estava tenho um caso que ao deletar um produto de uma determinada entrada de estoque ele tem que ir na tabela entrada e diminuir a quantidade e valor ai estava ká comigo querendo deixar para o banco de dados fazer esse procedimento, sendo assim pensei na Stored procedure em vez até de criar uma função no sistema para isso.... eu uso o banco de dados firebird e estou tentando fazer essa stored procedure abaixo: CREATE PROCEDURE P_PRD_ENTRADAS_AtuQtVlTotal ( vEmpCodigo integer, vEntCodigo Integer, vEntData Integer, vCodProduto INTEGER, vEntQtdTotal Numeric (10,4), vEntVlTotalProd Numeric (10,6) ) returns ( vEntQtdTotal Numeric (10,4), vEntVlTotalProd Numeric (10,6) ) as begin Update Prd_Entradas Set EntQtdTotal = :vEntQtdTotal where EmpCodigo = :vEmpCodigo and EntCodigo = :vEmpCodigo and EntData = :vEntData; end mas dá esse erro: This operation is not defined for system tables. unsuccessful metadata update. STORE RDB$PROCEDURE_PARAMETERS failed. attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_18". alguém pode me ajudar ?
  8. Pessoal não sei se alguém ai pode me ajudar.....mas estava tenho um caso que ao deletar um produto de uma determinada entrada de estoque ele tem que ir na tabela entrada e diminuir a quantidade e valor ai estava ká comigo querendo deixar para o banco de dados fazer esse procedimento, sendo assim pensei na Stored procedure em vez até de criar uma função no sistema para isso.... eu uso o banco de dados firebird e estou tentando fazer essa stored procedure abaixo: CREATE PROCEDURE P_PRD_ENTRADAS_AtuQtVlTotal ( vEmpCodigo integer, vEntCodigo Integer, vEntData Integer, vCodProduto INTEGER, vEntQtdTotal Numeric (10,4), vEntVlTotalProd Numeric (10,6) ) returns ( vEntQtdTotal Numeric (10,4), vEntVlTotalProd Numeric (10,6) ) as begin Update Prd_Entradas Set EntQtdTotal = :vEntQtdTotal where EmpCodigo = :vEmpCodigo and EntCodigo = :vEmpCodigo and EntData = :vEntData; end mas dá esse erro: This operation is not defined for system tables. unsuccessful metadata update. STORE RDB$PROCEDURE_PARAMETERS failed. attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_18". alguém pode me ajudar ?
  9. Estou pesquisando dentro da tabela temporaria o registro digitado no Edit: TblInt(tabela temporaria) e TxtSup.Text (Edit) TblInt.Locate('SupNome', TxtSup.Text, [loPartialKey, loCaseInsensitive]); ele localiza e foca no registro, mas o que eu queria era trazer esse registro para a primeira linha e também tenho os registros assim, Robinho - Comercial Deise - Fiscal Izabelly - Comercial Anderson Financeiro ai em um combo box eu tenho as areas cadastradas, que são Comercial, Fiscal, Financeiro e Produção. então queria colocar uma pesquisa no combo de quando escolher por exemplo a area de Comercial iria mostrar somente as pessoas do comercial tipo abaixo: Robinho - Comercial Izabelly - Comercial eu tentei fazer assim, mas não deu certo..... CboAre.Text(ComboBox) if CboAre.Text <> '' then begin if not TblInt.Locate('SupArea', CboAre.Text, [loPartialKey, loCaseInsensitive]) then begin TblInt.Delete; end; TblInt.SortOnFields('SupNome', true, false); TblInt.First; TxtSup.SetFocus; CalculoMsn end else begin PesquisaSupIn; CalculoMsn; TxtSup.SetFocus; end; tem como fazer essas pesquisas ?
  10. Fiz dessa maneira e deu certo, var DadosSupin : TStringList; Texto : TStrings; iRetorno : integer; DadosSupin.LoadFromFile(CamVirtualMsn+'BaseSupin.txt'); TblInt.Close; TblInt.Active := true; For i := 0 to DadosSupin.Count-1 do begin iRetorno := ExtractStrings([','],[' '],PChar(DadosSupin.Strings[i]),Texto); if iRetorno > 0 then begin with TblInt do begin insert; TblIntSupCodigo.AsString := Texto.Strings[0]; TblIntSupNome.AsString := Texto.Strings[1]; TblIntSupArea.AsString := Texto.Strings[2]; TblIntSupRamal.AsString := Texto.Strings[3]; post; end; end; Texto.Clear; end; TblInt.SortOnFields('SupNome', true, false); TblInt.First;
  11. Em um txt eu tenho varios dados, mas como padrão e exemplo vai ser igual a esse abaixo: 1,ROBINHO,COMERCIAL / FATURAMENTO,1125 2,DEISE,CONTÁBIL / FISCAL,5545 3,IZABELLY,CONTÁBIL / FISCAL,1234 4,ANDERSON,COMERCIAL / FATURAMENTO,3365 5,JACQUELINE,FINANCEIRO,5546 6,TOIN,PRODUÇÃO,8898 Onde estou lendo em uma stringlist (Dados) Dados.LoadFromFile('C:\Test\Base.txt'); agora o que eu preciso é percorrer em cada linha, por exemplo na linha: 1,ROBINHO,COMERCIAL / FATURAMENTO,1125 e ai jogar para uma tabela temporária como abaixo: with TblInt do begin insert; TblIntSupCodigo.AsString := 1; TblIntSupNome.AsString := Robinho; TblIntSupArea.AsString := Comercial / Faturamento; TblIntSupRamal.AsString :=1125; post; end; pois ai vou ler em um DbGrid esses dados da tabela temporária, mas tinha que passar de todos os registros do txt separando por virgula e jogar em cada campo correto da tabela temporária.
  12. Pessoal, já quebrei a cabeça, estou a uma semana tentando. Até postei anteriormente de como gerar numeros aleatórios sem repetir, onde o amigo Jhonas me ajudou.....mas surgiu que tinha que ser diferente.....então vou explicar desde o inicio. Tenho um cadastro de Suporte, onde informo o nome do Suporte e a Area, ai preciso do MSN para ele, mas não pode ser fixo, então teria que fazer assim: O total de suporte não tenho como saber, porque podemos ter 30 ou 20 ou 21 ou 5...etc.....então teria que pegar a quantidade de suporte cadastrado para gerar o MSN para cada....tipo assim: Vamos supor que tenho 5 Suporte cadastrado. Tenho que gerar então o MSN, 1, 2, 3, 4 e 5, mas tinha que ficar bagunçado para cada suporte, isso eu consegui fazer no post que eu abri, mas surgiu o porém A Cada 2 dias o suporte tem que mudar de MSN então tinha que fazer uma lógica de MSN de acordo com a Data, porque vamos supor que o suporte 1 no dia 01/06/2011 estava no MSN 4, então como repete 2 dias o mesmo MSN, no dia 02/06/2011 ele estava no MSN 4, ai no dia 03/06/2011 ele vai estar no MSN 1, depois repete dia 04/06/2011 no MSN 1, no dia 05/06/2011 vai estar no MSN 3....etc, mas ai eu queria ver no dia 01/06/2011 em qual MSN o suporte 1 estava, então escolhendo a data teria que gerar um sequencia de acordo com a data para bater o dia do MSN ou vamos supor que quero ver em qual MSN no dia 15/06/2011 o suporte vai estar...... Entenderam.....por isso que tinha que tipo gerar uma sequencia bagunçada de numeros, mas que seja o mesmo de acordo com a data. espero que tenham entendido..... um help ai.....
  13. fiz assim e ficou show de bola, valeu Jhonas..... var I, A, P : Integer; Num: array of Integer; begin SetLength(Num,Qtd);// Recebe a quantidade de suportes randomize; TblInt.First; for I := 0 to Qtd - 1 do Num[I] := I+1; for I := Qtd - 1 downto 0 do begin P := Random(I+1); A := Num[I]; Num[I] := Num[P]; Num[P] := A; end; for I := Low(Num) to High(Num) do begin TblInt.Edit; TblIntSupMsn.AsInteger := Num[I]; TblInt.Next; end;
  14. Fiz esse código abaixo para gerar numeros aleatórios de 1 á 10: procedure TForm1.Button2Click(Sender: TObject); var Num: Byte; a : integer; begin Randomize; for a := 1 to 10 do begin Num := Random(10); Memo1.Lines.Add(IntToStr(Num)); end; end; porém tenho 2 problemas ai; 1 > Queria gerar um numero aleatório de 1 á 10 e não de 0 á 10, nesse caso está gerando numero 0. 2 > Está repetindo os numeros e não poderia repetir. Tipo queria que gerasse os numeros e bagunçasse com ele, algém poderia me ajudar com esses 2 probleminhas, pois já pesquisei sobre o Random e não consegui resolver.
  15. Eu acabei usando uma variavel para pegar o valor da celula da linha que eu sempre passo....ai deu certo......
  16. adaptei aqui, mas não deu certo, mesmo tendo alguns itens marcados ele não fala. procedure TFAdmPro002.Button1Click(Sender: TObject); var i: integer; begin for i := 0 to TreModulos.Items.Count - 1 do begin if TreModulos.Checked[TreModulos.Items.Item[i]] then ShowMessage(TreModulos.Items.Item[i].Text); end; end;
  17. tente algo assim: if PageControl1.TabIndex = 0 then begin for i := 0 to ComponentCount -1 do if Components[i] is TEdit then TEdit(Components[i]).Clear; end else if PageControl1.TabIndex = 1 then begin for i := 0 to ComponentCount -1 do if Components[i] is TEdit then TEdit(Components[i]).Clear; end else if PageControl1.TabIndex = 2 then begin for i := 0 to ComponentCount -1 do if Components[i] is TEdit then TEdit(Components[i]).Clear; end;
  18. não dá certo assim já tentei, uso um DataSource que conecta na Tabela temporairia (RxMemoryData) e faço uma consulta na Query e jogo para a tabela temporaria e limpo a query, mas ai quero assim: Coluna1 Coluna2 Coluna3 Coluna4 Coluna5 Tipo Moeda Descrição Valor Lucro Linha 1 Custo Real Compra 52,90 0 Linha 2 Preço Real A Vista 70,00% Igual acima é o Grid, quando ir digitando o Lucro da Linha2 da Coluna5 vai já calculando o valor da linha1 da coluna 4 com o lucro da linha2 da coluna5, então o que eu não estou conseguindo fazer é pegar o valor da linha1 da coluna 4 e calcular ele com o lucro da linha2 da coluna 5 e ir mostrando na linha2 da coluna4.
  19. Estou tentando pegar o valor que está em uma celula de sua determinada linha eu já consegui pegar em qual celula e linha, mas não estou sabendo pegar o valor que está nesse field dessa linha; procedure TFProCad001.DbgValorCellClick(Column: TColumn); var linha, celula, te : integer; test : string; begin inherited; linha := TblValor.RecNo; celula := DbgValor.SelectedField.ComponentIndex; ShowMessage('linha: '+IntToStr(linha)+' celula: '+IntToStr(coluna)); end; pois o que sempre vou ter que fazer é antes de sair do field 7 é pegar o valor que está no field 6 da linha anterior, por isso estou tentando fazer isso.....
  20. se quiser usar Table no lugar da Query, o campo deverá ser do tipo logical ... e nesse caso a propriedade DisplayValues passara a existir para o Table. abraço Ok, resolvido
  21. voce não tem que comparar se o campo do dbgrid1 é igual ao campo do dbgrid2, e sim se o campo do dbgrid1 é o campo que voce quer... exemplo: procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if (Column.Field.FieldName = 'TIPO') then begin DBGrid2.Canvas.Font.Color:= clRed; DBGrid2.Canvas.FillRect(Rect); DBGrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State); end else begin DBGrid2.Canvas.Font.Color:= clBlack; DBGrid2.Canvas.FillRect(Rect); DBGrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end; abraço mas ai não vai dar certo....porque eu tinha que verificar, quando eu clicar na linha do DbGrid1, ai ele tem que ver o o formulario que está selecionado no campo Formulario do DbGrid1 e comparar com o campo MovForm do DbGrid2 para que ai se for igual ao selecionado ele possa pintar e quando mudar para a outra linha do DbGrid1 verificar se tem algum resgistro igual no DbGrid2 para selecionar, dessa maneira ele pinta a celula do registro.
  22. acho qeu voce não entendeu a ideia ... veja como é simples procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if (Column.Field.FieldName = 'TIPO') then begin if Query1.FieldByName ('TIPO').AsBoolean = True then Query1TIPO.DisplayValues := 'Verdade' else Query1TIPO.DisplayValues := 'Falso'; end; end; voce pode fazer a mesma coisa para E e S como foi feito para T ou F ( True ou False ) ou se o campo for do tipo VarChar(1) procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if (Column.Field.FieldName = 'TIPO') then begin if Query1.FieldByName ('TIPO').AsString = 'E' then Query1TIPO.DisplayValues := 'Entrada' else Query1TIPO.DisplayValues := 'Saida'; end; end; abraço Tive que mudar da Query para uma Tabela temporária porem ela não tem essa propriedade, já tentei o DisplayText ou Label mas não deu certo, tem como fazer isso quando é para tabela temporária ?
  23. Então....eu coloquei o codigo abaixo no evento OnDrawColumnCell do DbGrid2, mas não funfou 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);
  24. O relacionamento que as tabelas tem é o campo Formulario do Dbgrid1 e o MovForm do Dbgrid2, ambos é o mesmo valor porque é assim quando eu clicar no DbGrid1 ai verificar no DbGrid2 quais registros tem referente ao do DbGrid1.
  25. abraço Eu utilizo o Firebird, porém no banco eu salvo mesmo somente como E para Entrada e S como Saida, porem eu tenho o meu retorno sempre S ou E......pois eu achava que daria certo, pois tipo para mostrar o valor em uma mascara eu faço assim: procedure TFrmLivroCaixa.Query1AfterOpen(DataSet: TDataSet); begin inherited; TFloatField(Query1.FieldByName('Valor')).DisplayFormat := 'R$ #,##0.00'; end; não daria para fazer algo parecido ?
×
×
  • Criar Novo...