Ir para conteúdo
Fórum Script Brasil

DiabloX3

Membros
  • Total de itens

    143
  • Registro em

  • Última visita

Tudo que DiabloX3 postou

  1. DiabloX3

    Commit x IBX

    acho que já descobri pessoal. Só me confirmemse estou certo/se era isso mesmo. Eu tenho 1 IBTransction pra cada form e muitas Querys em cada form. Acontecia que essas querys não estavam ligadas a esse Transction desse form e sim a um outro Transction "Principal" vamos dizer assim (porque antes a gente usava 1 Transaction só para todos os form, mas isso não da muito certo). Pelo menos eu iniciei uma venda, fui no banco e atualizei e ela já estava la começada. Quando finalizei, ainda com o sistema aberto atualizei o banco e lá estavam todos os dados daquela venda :)
  2. Nada com "commit" encontrado no pesquisar. Problema é o seguinte agora moçada. Trabalho com Firebird 1.5 com IBX e Delphi7. Utilizo componentes da palheta IBX e estou com problemas na hora de gravar os dados. Aconteceu que temos um sistema num notebook. Lá tem o botão gravar, cancelar, sair etc ... Quando clico no gravar ele tem a rotina para fazer o commit no banco e mostrar mensagem de sucesso. Porém depois de vários pedidos feitos e gravados, o cliente desligou o note com a tela do sistema aberta e para minha supresa nada foi realmente gravado. Em um outro teste fiz a mesma coisa e fechei o sistema, aí sim os dados forem efetivamente gravados. Qual o problema entre fechar o sistema ou não? Eu acreditava que o Commit era essencial para a gravação dos dados mas não foi isso que observei. Realizando o teste na mão, observei que enquanto gravo uma venda, sem fechar o sistema, vou no IBX e abro a tabela de Vendas e o pedido não está lá. O que acontece nesse caso? Como resolver? Abaixo o codigo do gravar procedure TfrmPedido.btnGravarClick(Sender: TObject); begin if (edtCodCliente.Text <> '') and (cmbPrazoPgto.Text <> '') and (rdgCondPgto.ItemIndex <> -1) and (rdgTipoEnt.ItemIndex <> -1) then begin IBTransMobili.StartTransaction; qryAltPedido.ParamByName('P_COD').AsInteger := StrToInt(lblCodVenda.Caption); qryAltPedido.ParamByName('P_TOTAL').AsFloat := qryTotal.FieldByName('TOTAL').AsFloat; qryAltPedido.ParamByName('P_CLI_COD').AsInteger := StrToInt(edtCodCliente.Text); qryAltPedido.ParamByName('P_OBS').AsString := memObs.Text; qryAltPedido.ParamByName('P_PAR_CP_CODIGO').AsInteger := cmbPrazoPgto.KeyValue; qryAltPedido.ParamByName('P_TOTAL').AsFloat := qryTotal.FieldByName('TOTAL').AsFloat; qryAltBackupPed.ParamByName('P_COD').AsInteger := StrToInt(lblCodVenda.Caption); qryAltBackupPed.ParamByName('P_TOTAL').AsFloat := qryTotal.FieldByName('TOTAL').AsFloat; qryAltBackupPed.ParamByName('P_CLI_COD').AsInteger := StrToInt(edtCodCliente.Text); qryAltBackupPed.ParamByName('P_OBS').AsString := memObs.Text; qryAltBackupPed.ParamByName('P_PAR_CP_CODIGO').AsInteger := cmbPrazoPgto.KeyValue; qryAltBackupPed.ParamByName('P_TOTAL').AsFloat := qryTotal.FieldByName('TOTAL').AsFloat; if rdgSit.ItemIndex = 0 then begin qryAltPedido.ParamByName('P_SIT').AsString := 'V'; qryAltBackupPed.ParamByName('P_SIT').AsString := 'V'; end else if rdgSit.ItemIndex = 1 then begin qryAltPedido.ParamByName('P_SIT').AsString := 'T'; qryAltBackupPed.ParamByName('P_SIT').AsString := 'T'; end else if rdgSit.ItemIndex = 2 then begin qryAltPedido.ParamByName('P_SIT').AsString := 'B'; qryAltBackupPed.ParamByName('P_SIT').AsString := 'B'; end; if rdgTipoEnt.ItemIndex = 0 then begin qryAltPedido.ParamByName('P_TIPO').AsString := 'URGENTE'; qryAltBackupPed.ParamByName('P_TIPO').AsString := 'URGENTE'; end else if rdgTipoEnt.ItemIndex = 1 then begin qryAltPedido.ParamByName('P_TIPO').AsString := 'NORMAL'; qryAltBackupPed.ParamByName('P_TIPO').AsString := 'NORMAL'; end else if rdgTipoEnt.ItemIndex = 2 then begin qryAltPedido.ParamByName('P_TIPO').AsString := 'PROGRAMADA'; qryAltBackupPed.ParamByName('P_TIPO').AsString := 'PROGRAMADA'; end else if rdgTipoEnt.ItemIndex = 3 then begin qryAltPedido.ParamByName('P_TIPO').AsString := 'TROCA/BONIF'; qryAltBackupPed.ParamByName('P_TIPO').AsString := 'TROCA/BONIF'; end; if rdgCondPgto.ItemIndex = 0 then begin qryAltPedido.ParamByName('P_CONDICOES').AsString := 'DINHEIRO'; qryAltBackupPed.ParamByName('P_CONDICOES').AsString := 'DINHEIRO'; end else if rdgCondPgto.ItemIndex = 1 then begin qryAltPedido.ParamByName('P_CONDICOES').AsString := 'CHEQUE'; qryAltBackupPed.ParamByName('P_CONDICOES').AsString := 'CHEQUE'; end else if rdgCondPgto.ItemIndex = 2 then begin qryAltPedido.ParamByName('P_CONDICOES').AsString := 'BOLETO'; qryAltBackupPed.ParamByName('P_CONDICOES').AsString := 'BOLETO'; end else if rdgCondPgto.ItemIndex = 3 then begin qryAltPedido.ParamByName('P_CONDICOES').AsString := 'OUTRO'; qryAltBackupPed.ParamByName('P_CONDICOES').AsString := 'OUTRO'; end else if rdgCondPgto.ItemIndex = 4 then begin qryAltPedido.ParamByName('P_CONDICOES').AsString := 'TROCA/BONIF'; qryAltBackupPed.ParamByName('P_CONDICOES').AsString := 'TROCA/BONIF'; end; qryAltPedido.ExecSQL; qryAltBackupPed.ExecSQL; IBTransMobili.Commit; Limpar(Sender as TObject); qryPrazoPgto.Close; mensagem := 'Pedido Gravado com Sucesso!'; Application.MessageBox(Pchar(mensagem), 'Informação', MB_OK+MB_ICONINFORMATION); pn_geral.Enabled := False; btnNovo.SetFocus; *Aqui eu gravo em duas tabelas ao mesmo tempo por causa de uma outra rotina no sistema que exige isso.
  3. aham, tentei reparar e no gerenciador de dispositivos mostra que está funcionando corretamente sem exclamações .. quando coloco no desktop o LED ethernet não acende, mas quando plugo o cabo no note acende normal
  4. experimentou substituir o AND pelo WHERE? F_DMExpress.Q_Pagamento.SQL.Add('SELECT VENCIMENTO FROM PAGAMENTO'); F_DMExpress.Q_Pagamento.SQL.Add('WHERE VENCIMENTO BETWEEN '+#39+ data1+#39+' and '+#39+data2+#39); qualquer coisa tente no FormShow se não der muito certo no Create abraço
  5. O nome do fornecedor está ligado pelo codigo. Então se na sua tabela você possui um campo CODFORN, também possui esse campo na tabela de FORNECEDORES .. o que precisa é usar um where e ligar FORN.CODFORN = SUATABELA.CODFORN .. assim ligará as chaves das tabelas e você pode dar um select no campo NOME do fornecedor abraço ___ .. não vi que já tinha respondido :P
  6. Duplo clique na query ligada ao DataSource que exibe os itens na Grid, encontre o campo que deseja e sete a propriedade currency para True Abraços
  7. Então Jhonas, o que eu tinha feito é essa sua segunda opção. Apenas achei que tinha algum outro jeito. A primeira dica, Append, pelo que testei no anterior vai criar uma linha para cada mensagem, dessa forma meu objetivo não seria atingido pois teria 3 linhas (o que é meio óbvio por usar o comando Append). Mas está jóia, continuarei desse jeito então. Obrigado. Abraço
  8. Executar apenas este comando Jhonas? se for, não deu certo pro que eu quero fazer ... ele deu append e criou 3 linhas diferentes no memo2 de acordo com o que já tinha no memo1 (3 linhas) teria que sair as 3 mensagens seguidas uma da outra. Explicando melhor: Estou em uma pesquisa. Nela informo os parâmetros que desejo pesquisar e carrego os dados na query. Esses dados vem no BD que tem um campo OBS e lá ele está gravado em 3 linhas diferentes, 1 linha pra cada mensagem. O que preciso e puxar essas 3 linhas mas trazê-las em apenas 1, seguida uma da outra para que possa gerar um arquivo com isso. Na verdade eu já consegui fazer isso usando variável e um for mas queria aprender e ver se é possível diminuir essas linhas, evitando que o programa execute o laço e faça de uma forma mais simplificada. Se tiver alguma outra idéia é bem vinda :) abraços
  9. Revivendo o tópico. Estou com essa dúvida e quase que a resposta do nosso amigo Erso me foi útil. Unico problema é que tenho várias mensagens para exibir. Quando tento adicionar uma seguida da outra mas posicionando no Index[0] ele leva metade da mensagem que já estava adicionada no memo para a linha de baixo para poder exibir a que estou inserindo no momento na linha 0. A mensagem fica picada Como faço pra deixar uma seguida da outra sem cortar a mensagem no meio? Estava tentando assim if Memo1.Lines.Count <> 1 then Memo2.Lines.Insert(0, Memo1.Lines.Strings[0] + Memo1.Lines.Strings[1] + Memo1.Lines.Strings[2] //assim por diante else Memo2.Text := Memo1.Text; No caso estou tentando adicionar a um outro memo mas em uma unica linha todo o conteudo (todas as linhas) do memo1. Mas poderia também adicionar a um edit normal, só não sei como fazer em qualquer um dos casos.
  10. infelizmente não obtive resultados mesmo assim
  11. DiabloX3

    Delphi + palm

    Na verdade o que você teria que fazer é programar em uma outra linguagem (mais parecida com o VB) que pode ser, dentre algumas possíveis, o HB++ Especificamente o delphi não programa pra palm abraço
  12. Ah, beleza então Churc .. entendi Valeu
  13. Peço desculpas pelo tópico triplicado.. o site estava com demora e eu acabei clicando F5 algumas vezes
  14. Tentei procurar essa dúvida nos fóruns, tanto aqui quanto em outros, mas eu não sei bem como é chamado essa dúvida então resolvi postar aqui :P O que queria saber é se há problemas quanto a não conversão dos valores de campos no form para o banco e vice-versa. Explico txt_cod_cli.Text := dm_Estoque.qry_Cliente.FieldByName('CLI_CODIGO').AsString; Tem diferença/problema em deixar dessa maneira ou preciso fazer assim? txt_cod_cli.Text := IntToStr(dm_Estoque.qry_Cliente.FieldByName('CLI_CODIGO').AsInteger); e na hora de passar pro banco se devo converter pra inteiro ou gravar string? abraço Peço desculpas pelo tópico triplicado.. o site estava com demora e eu acabei clicando F5 algumas vezes
  15. Coloco qual? Tentei com Fixed e Variable e nenhuma me deixou alterar o tamanho da fonte pra 8. A não ser que seja em run-time, mas dai não tenho muita ideia de como fazer Form1.RLDBRichText.Font.Pitch = ? Obs> D7
  16. Aproveitando o tópico, estou utilizando um RLDBRichText pro relatório só que não consigo alterar o tamanho da fonte dele ou nenhum tipo de formatação (negrito/cor), nem em design time nem run-time ... tem como alterar essas propriedades?
  17. Jhonas, tentei de todas as formas aqui, mas é um pouco mais complicado. Explico. Tenho uma DBGrid chamada grdImpressos e logo abaixo uma outra chamada grdCarregamento e no meio um botão adicionar Quando clicado, ele deve selecionar o registro da grdImpressos que contém vários itens por de trás. OK, agora preciso passar da tabela de ITENS_PEDIDO para ITENS_CARREGAMENTO. Se fosse do modo "seleciona 1 e adiciona" dava pra fazer tranquilo. O problema é os registros múltiplos. A cada clique no Adicionar então eu devo pegar a linha selecionada (Pedido) e os itens que a ele fizer parte (itens_pedido) if grdImpressos.SelectedRows.Count > 0 then begin for cont := 0 to Pred(grdImpressos.SelectedRows.Count) do begin // aqui eu tive que dar um select na query referente ao dsCarregamento porque senão quando saía // da linha de baixo ele dava operation on a closed dataset. dsCarregamento.Dataset.Bookmark := grdImpressos.SelectedRows[cont]; sql := '(VEN_PED_COD = '+IntToStr(qryImpressosVEN_PED_COD.AsInteger)+')'; qryItensPedido.Close; qryItensPedido.SQL.Clear; qryItensPedido.SQL.Add('SELECT * FROM ITENS_PEDIDO_VENDAS WHERE' +sql); qryItensPedido.Open; Aqui eu selecionei o pedido com os itens que pertencem a ele. Preciso agora passar item a item para a tabela de ITENS_CARREGAMENTO O meu problema é que dando Next ou não, colocando while not "datasource".Eof ou "qry".Eof, independente do que usei está dando erro de FOREIGN KEY na tabela de ITENS_CARREGAMENTO, pois não deve estar passando para o próximo registro. //INSERI OS ITENS DO CARREGAMENTO qryItensCarrega.Close; qryItensCarrega.ParamByName('P_CAR_COD').AsInteger := StrToInt(lblCod.Caption); qryItensCarrega.ParamByName('P_PED_COD').AsInteger := qryItensPedido.FieldByName('VEN_PED_COD').AsInteger; qryItensCarrega.ParamByName('P_PRO_CODIGO').AsInteger := qryItensPedido.FieldByName('PRO_CODIGO').AsInteger; qryItensCarrega.ParamByName('P_QTD').AsFloat := qryItensPedido.FieldByName('ITE_QTD').AsFloat; qryItensCarrega.ParamByName('P_UNIT').AsFloat := qryItensPedido.FieldByName('ITE_VALOR_UNIT').AsFloat; qryItensCarrega.ParamByName('P_TIPO').AsString := qryItensPedido.FieldByName('ITE_TIPO').AsString; qryItensCarrega.ExecSQL; end; Como que faço pra passar pro próximo item do registro selecionado? Daí após isso deve selecionar o próximo Pedido (que selecionei com o ctrl) e os itens dele e fazer a mesma coisa abraço
  18. Se você já mexeu com IBQuery ou qualquer outro tipo de query nativo do Delphi, não terá problemas em mexer com a ZQuery, elas funcionam iguais, mesmos comandos [Open, ExecSQL] etc. Nesse lado esquerdo que você mencionou coloca em database o nome do banco que voce irá trabalhar. Daí com ele poderá fazer as devidas modificações.
  19. Pessoal, procurei por multiselect no fórum mas os tópicos não tratam exatamente do que preciso. Necessito do seguinte: o cliente seleciona as linhas que deseja no DBGrid segurando o ctrl. Até aí tudo bem, é só deixar gdMultiSelect = True Agora eu tenho um botão Add pra pegar os registros selecionados pelo usuário e inserir em uma outra DBGrid ao lado. Pensei em aproveitar o código do evento OnDrawColumnCell mas não tive êxito if grdImpressos.SelectedRows.Count > 0 then begin if (gdSelected in state) then // Se o estado da célula é selecionado begin . . . end obs: para (gdSelected in state) [nesse caso] declarei uma var State: TGridDrawState senão conseguia compilar Alguma sugestão? abraço
  20. Se fosse realmente a placa de rede não teria funcionado quando teste aqui no serviço. Na hora que espetou o cabo já reconheceu na hora
  21. Não estou utilizando o roteador mais. Resetei o modem e o router e liguei direto modem/Desktop e modem/Note Testei com outro cabo de rede sim, mas deu na mesma, ambos funcionaram no note e ambos não funcionaram no desktop
  22. Olá amigos, acho um tanto estranho o meu problema. De uma hora pra outra, navegando na internet, o computadorzinho da rede se desconectou e ficou com aquele X vermelho. Tentei de tudo e não foi possível reconectar. Até liguei no speedy ver se era o sinal que não estava chegando, mas ele estava OK! Trouxe meu pc no trampo e testei na rede daqui pra ver se era a placa de rede. Na hora que espetou o cabo de rede já entrou na net. Naveguei, naveguei e tudo estava OK. Achei que o problema era então no modem. Tenho um de reserva em casa e então tentei com aquele. Nada (detalhe - resetei o modem e o roteador wi-fi, desfiz as configurações, deixei pra pegar IP e DNS automaticamente), não funciona Aí experimentei esse modem de reserva com meu notebook. Para minha surpresa, conectou numa boa. Daí eu pergunto, aonde está o problema? Não aparenta ser minha placa de rede porque no trampo conectou, mas em casa não, e o modem reserva conecta no note, mas no desktop não. Sinceramente não sei o que fazer. Detalhe: a luz da rede, laranjadinha, não pisca quando conecto na saída do desktop, mas também não piscava quando levei no trampo e funcionou. abraço
  23. Interessante Jhonas, não sabia dessa questão do loop não. Vou deixar sem mesmo. Obrigado abraços
  24. if odd(qryPesquisa.RecNo) then // Se não for par grdVendas.Canvas.Brush.Color := $00EFEFEF else grdVendas.Canvas.Brush.Color := $00E6E6E6; TDbGrid(Sender).Canvas.Font.Color:= $00400000; if (gdSelected in state) then // Se o estado da célula não é selecionado with (Sender as TDBGrid).Canvas do begin Brush.Color := clMenuHighlight; Font.Style := [fsbold]; Font.Color := clWhite end else grdVendas.Canvas.Font.Color:= clBlack; grdVendas.Canvas.FillRect(Rect); grdVendas.DefaultDrawColumnCell(Rect, DataCol, Column, State); // Reescreve o valor que vem do banco O meu pro seu só muda as cores acho, e o que faz com a linha seleciona (bold etc) O problema que nessa Grid com esse código, quando seguro o ctrl e clico, apenas fica com um pontinho preto no canto esquerdo da Grid onde não tá escrito nada, onde fica o cursorzinho indicando a linha atual, mas não seleciona a linha de fora a fora. O dgMultiSelect está True Na grid sem o evento DrawColumnCell, ctrl + clique ele seleciona de fora a fora a linha. Não sei se é algum detalhe no meu código?
×
×
  • Criar Novo...