
dan_visualdm
Membros-
Total de itens
129 -
Registro em
-
Última visita
Tudo que dan_visualdm postou
-
olá pessoal, boa tarde! fiz uma funçãozinha aqui, mais está dando um probleminha: - ela faz um filtro na tabela - tbl_clientes_detalhes pelo código do cliente e os itens pra ele cadastrado na tablea detalhes e soma os valores da coluna de valor. O que acontece: - Quando clico em Next ou Prior sem fazer nenhuma inclusão, baixa ou estorno ele soma certinho - Quando dou baixa ou estorno ele soma certinho, ele da um refresh na table e soma (já com o novo ítem incluído) e mostra o resultado. Porém... - Se incluir, baixa ou estornar e e tentar mudar de cliente clocando em Next ou Prior, ele não consegue fazer o filtro e somar os valores, o seguinte erro é apresentado: q_relatorio_clientes: Cannot perform this operation on a closed database essa programação está assim: dentro do botão - next, prior: var soma1: Double; soma2: Double; begin dm.q_clientes.Next; begin soma1 := 0; soma2 := 0; dm.q_relatorio_clientes.First; dm.q_relatorio_clientes_pg.First; with dm.q_relatorio_clientes do begin Close; SQL.Clear; SQL.Add('select * from tbl_relatorio_clientes where codigo like'''+ DBEdit1.Text + '%'''); Open; while not dm.q_relatorio_clientes.Eof do begin soma1 := soma1 + dm.q_relatorio_clientes.Fieldbyname('valor').Value; dm.q_relatorio_clientes.Next; end; v_total1.Caption := FloatToStrF(soma1,ffCurrency , 15,2); begin with dm.q_relatorio_clientes_pg do begin Close; SQL.Clear; SQL.Add('select * from tbl_relatorio_clientes_pg where codigo like'''+ DBEdit1.Text + '%'''); Open; while not dm.q_relatorio_clientes_pg.Eof do begin soma2 := soma2 + dm.q_relatorio_clientes_pg.Fieldbyname('valor').Value; dm.q_relatorio_clientes_pg.Next; end; v_total2.Caption := FloatToStrF(soma2,ffCurrency , 15,2); end; end; end; end; end; dentro dos botões - incluir, baixar e estornar não tem nenhuma função.... alguém pode me dar uma forcinha???
-
olá amigo, valeu pela dica... vou testar aqui e depois posto o resultado... abraços!
-
pessoal, andei pesquisando aqui no forum mais não achei nada tão especifico... gostaria de uma ajuda de vocês... no meu cadastro quero poder inserir a foto de um produto, porém não quero que a foto fique armazenada no banco, quero que fique apenas o caminho, isso porque são milhares de produtos que serao cadastrado e o banco não aguentaria guardar todas essas imagens... andei pesquisando algumas coisas de gravar so o caminho no banco, mais não entendi muito bem, por isso estou vindo aqui pedir uma forcinha... vamos supor, uma imagem que esta na desktop, no meu cadastro eu clicaria em ABRIR FOTO, (opendialog) selecionaria a foto e automaticamente ele copiasse a foto para a pasta img_prod que é uma pasta que fica dentro do sistema, e gravasse somente o caminho no banco. obrigado!
-
pessoal, bom dia! estou fazendo sistema de vendas porém estou com um probleminha aqui na hora de calcular, acredito que seja coisa simples: para que ele calcule o valor final tenho que clicar 2 vezes no botao calcular... ex: coloquei 2 produtos e seu valor unitario seja 100,00 então clico no botao calcular ele mostra o valor total R$ 200,00 mas o valor final ele mostra R$ 0,00 (e só mostrará R$ 200,00 no valor final se eu clicar novamente no botao calcular.) * a mesma coisa acontece se depois eu der um desconto, ex de 50% - ai ele joga o valor do desconto certo e joga o valor total no valor final... e só mostra o valor final com o desconto já embutido se eu clicar novamente no botao calcular: veja abaixo minha tela e a programação: (ps. essa é apenas uma tela de teste que montei antes de inserir a programação no meu projeto) programação var valor1, valor2, valor3, valor4, parcial, porcent, total, resultado : real; begin if StrToInt ( edt_quant_venda.Text ) > StrToInt ( edt_estoque.Text ) then begin ShowMessage('Estoque menor que o pedido de venda'); edt_quant_venda.SetFocus; end else begin valor1 := StrToFloat(edt_quant_venda.Text); // quant. venda valor2 := StrToFloat(edt_valor_uni.Text); // valor unitario valor3 := StrToFloat(edt_valor_desc.Text); // valor desconto valor4 := StrToFloat(edt_valor_total.Text); // valor total porcent := StrToFloat(edt_desconto.Text); // desconto (%) begin parcial := (valor1 * valor2); // calcula quantos itens esta sendo vendido pelo seu calor unitario total := (parcial * porcent)/(100); // calcula o valor parcial pelo desconto resultado := (valor4 - valor3); // deveria pegar o valor total e subtrair pelo valor do desconto begin edt_valor_total.Text := FloatToStrF(parcial,ffnumber, 15,2); // mostra o valor da quantidade de itens multiplicado pelo valor unitario edt_valor_desc.Text := FloatToStrF(total,ffnumber, 15,2); //mostra o valor do desconto em R$ edt_valor_final.Text := FloatToStrF(resultado,ffCurrency, 15,2); //deveria mostrar o valor final do produto end; end; end; end; tela obrigado pessoal! abraços
-
olá amigo... fiz o teste aqui e deu certo use o seguinte. após inserir ou atualizar alguma in formação da tabela: ADOtable.requery; testei aqui e funciona certinho! tenta ai qualquer coisa posta! abraçoss...
-
olá amigo... preciso gravar fotos no meu BD ACCESS porém quero fazer igual você falo, gravar somente a extensão pois vao ser muitas fotos e o banco vai fica lotadao se gravar as fotos nele... mas eu não manjo nadaaa nadaa dssa paradinha de fotos no delphi e tal.. você poderia dar uma força ai escrever uns passos do que tenho que fazer? obrigado!
-
bom, mas sobre o refresh, testa o seguinte: fazer: ADOTable.Close; ADOTable.Open; ou tenta .... quando você fizer os comandos de insert/delete/update ..logo no final deles coloca um ADOTable.requery(); (onde fica armazenado a tabela) e no formshow também faça isso, coloca o ADOtable.requery();
-
Olá amigo.. vamos lá... primeiramente organiza tudo isso dentro de um DataModule, fica melhor pra trabalhar, principalmente a hora que seu projeto for ficando maior e for rodar pela rede... bom, depois porque você não tira o ADOTable e usa no lugar um ADOQuery... é bem melhor usando o ADOQuery você pode fazer o seguinte após incluir algo: with dm.q_clientes do begin Close; SQL.Clear; SQL.Add('select * from tbl_clientes ORDER BY empresa asc'); Open; end; Explicação: dm - Name do DataModule q_clientes - name do ADOQuery select * from tbl_clientes - está selecionando tudo da tabela clientes ORDER BY empresa asc - organiza a lista do DBGrid em ordem alfabética através dos cadastros do campo empresa (que é um campo da tbl_clientes) não sei se era isso que você queria, espero que ajude! abraços
-
pessoall.... vai um duvida aqui sobre montar o sistema de vendas... quero fazer no meu sistema.. mas não tenho ideia de como montá-la e programá-la, montei a tela do form da maneira que imagino ser essa tela de vendas porém como é a primeira vez que estou fazendo isso venho pedir ajuda de vocês... abaixo o form que montei: o que não sei fazer: - ali tem um campo que mostra quanto tenho daquele produto em estoque, no outro campo "Quantidade" quando eu digitar um valor maior do estoque ele avisar que não é possível realizar essa venda - depois de colocar a Quantidade, ele somar automaticamente o valor total (multiplicar o valor unitario pela quantidade indicada) - se eu digitar 10 no campo "Desconto (%)" ele calcular um desconto de 10% sobre o valor total * bom, depois que isso tiver funcionando.... como ou qual o melhor jeito de montar uma forma de pagamento parcelada? por exemplo, entrada 30 e 60 ou 30/60/90 e depois com isso ele gerar sozinho em outra tabela (tbl_contas_pagar) os pagamentos para as datas 30/60/90 já calculado.. exemplo: venda de R$ 900,00 parcelada em 30/40/90 - venda realizada 26/11/2008 ai automaticamente ele jogar no contas a pagar: 26/12/2008 - R$ 300,00 26/01/2009 - R$ 300,00 26/02/2009 - R$ 300,00 bom, é bastante coisa que eu to com duvidas.... =/// desde já agradeço a ajuda de todos.... abraços!!!
-
olá carinhaa... então eu testei as dicas do outro post porém tive o seguinte erro (que não sei o porque e nem como corrigir..) se você pede pra cadastrar um novo cliente, por exemplo, e não preencher um campo ele avisa... mas se você inserir qualquer coisa e apagar (deixando em branco novamente) ele grava numa boa. a mesma coisa acontece se você tiver um cliente já cadastrado e abrir o cadastro e apagar o campo nome do cliente deixando em branco você consegue gravar também sem nenhum bloqueio.... ai acontece isso também? Ps. testei todos os exemplos citado, todos deu o mesmo erro.
-
olá ! bom o 1º e o 2º ítem pode ser resolvido através do tópico abaixo, tem várias opções muito boas para resolver isso... eu estava com a mesma dúvida e deu certinho, vale a pena conferir: http://scriptbrasil.com.br/forum/index.php?showtopic=128866 Quanto ao 3º, qual tipo de campo seria? (axo que se estiver como chave primária ele já não deixar gravar, automaticamente) espero que possa ter ajudado, posta o resultado ai depois... abraços!
-
Pegar informações de outras tabelas
pergunta respondeu ao dan_visualdm de dan_visualdm em Delphi, Kylix
olá amigo funcionou tudo direitinho... obrigado pela ajuda!!! - Montando agora a parte de produtos igual você me falou veio a idéia de fazer a parte de vendas da seguinte forma: eu abro a lista de produtos, localizo o produto e clico em vender... caindo na tela de vendas preencho o comprador tudo certinho... porém gostaria de fazer 2 coisas que não estou conseguindo... (na verdade nem tenho idéia de como fazer) - em produtos tenho a quantidade cadastrada (exemplo 5 em estoque) se eu tentar vender mais que 5 gostaria que o sistema informasse que não é possível pois não tem esse tanto em estoque, tem somente 5.... - quanto eu realizo a venda na tela de vendas, seleciono um produto pela lista que busca no form produtos da maneira q você me ensinou.. porém gostaria que quando eu selecionar um produto da lista ele mostrasse já o preço do produto no campo valor, e que quando eu mudar a quantidade ele também já alterasse esse valor... como fazer esses procedimentos? obrigado mais uma vez pela ajuda e pela atenção! -
Pegar informações de outras tabelas
pergunta respondeu ao dan_visualdm de dan_visualdm em Delphi, Kylix
Uma opção seria usar o DBLookupComboBox. ConfiguraçãoDataField : campo a receber o valor DataSource : dataset em edição ListSource : dataset de onde você busca os dados de consulta ListField : campo da consulta a ser mostrado na lista KeyField : campo da consulta a ser atribuido ao campo listado na propriedade datafield. Veja este tópico Abraços obrigado amigo pela ajuda... vou testar esse final de semana essas dicas e depois posto o resultado... abraçoss -
pessoal, bom dia! no meu sistema tenho em um lugar uma tabela onde cadastro os Produtos e em outro lugar uma que cadastro os Fornecedores. o que eu preciso fazer: na tela de cadastro de produto tem um campo Fornecedor: onde eu cadastro o fornecedor daquele produto, porém atualmente eu tenho que digitar o nome do fornecedor. O que eu queria: nesse campo fornecedor ter alguma coisa como por exemplo um ComboBox (ou DbComboBox) onde só possa escolher um fornecedor já cadastrado no sistema. ---------------- Dúvida 2: Após fazer isso também gostaria de saber como faço para "obrigar" a pessoa a cadastrar o nome do produto e o fornecedor. Caso esse campo esteja em branco ele não deixa gravar essas informações no banco. PS.: meu BD é Access obrigado mais uma vez pela ajuda!
-
dm.q_telefones.close; dm.q_telefones.SQL.clear; dm.q_telefones.SQL.add('select * from tbl_telefones where empresa like '''+ Edit1.Text + '%'''); dm.q_telefones.Prepared; dm.q_telefones.open; Edit1.Clear; basta fazer esta modificação no código: dm.q_telefones.close; dm.q_telefones.SQL.clear; dm.q_telefones.SQL.add('select * from tbl_telefones where empresa like '''+'%'+ Edit1.Text + '%'''); dm.q_telefones.Prepared; dm.q_telefones.open; Edit1.Clear; abraço olá amigo, muito obrigado pela ajuda!! =DDD
-
olá pessoal... atualmente no meu sistema estou usando a seguinte forma para fazer pesquisa de dados num banco de dados: dm.q_telefones.close; dm.q_telefones.SQL.clear; dm.q_telefones.SQL.add('select * from tbl_telefones where empresa like '''+ Edit1.Text + '%'''); dm.q_telefones.Prepared; dm.q_telefones.open; Edit1.Clear; porém essa busca ela só acha alguma coisa se você digitar o início da palavar... se for , por exemplo Forum ScriptBrasil e você buscar por Forum ele acha, Porém... se você buscar por Brasil ele só irá mostrar algum registro se começar por Brasil... se a palavra Brasil estiver em nom eio ou no final nada aparece... DUVIDA: como fazer para a pesquisar achar a palavra independente da onde ela esteja? PS.: Banco de Dados: Access Obrigado pessoal.
-
Form.Caption := \'Registros: (\' + IntToStr(ADOQuery.RecordCount) + \')\'; ou Label1.Caption := 'Clientes Cadastrados = ' + IntToStr(ADOQuery.RecordCount) OBS: de preferencia coloque o comando logo apos dar um post e um applayupdates na tabela abraço olá amigo!! vou testar aqui... depois posto o resultado! obrigado!!!
-
Voce pode montar um preview personalizado usando o componente QuickRep ou pode puxar este exemplo: arquivo DFM http://www.bsdg.org/SWAG/DELPHI/0312.PREVIEW.ZIP Descrição da Unit Angus Johnson ajohnson@rpi.net.au unit Preview; { dfm file is at end .. use XX34 to decode } interface uses SysUtils, Classes, Controls, Forms, Quickrep, ExtCtrls, Messages, StdCtrls, Buttons, WinTypes, WinProcs, Dialogs, Printers, IniFiles; type TFmPreview = class(TForm) Panel1: TPanel; QRPreview1: TQRPreview; Label1: TLabel; PrintDialog1: TPrintDialog; bbPrev: TBitBtn; bbNext: TBitBtn; bbZoomOut: TBitBtn; bbZoomW: TBitBtn; bbZoomIn: TBitBtn; bbPrint: TBitBtn; bbClose: TBitBtn; procedure FormShow(Sender: TObject); procedure bbZoomOutClick(Sender: TObject); procedure bbZoomWClick(Sender: TObject); procedure bbPrevClick(Sender: TObject); procedure bbNextClick(Sender: TObject); procedure bbPrintClick(Sender: TObject); procedure bbZoomInClick(Sender: TObject); procedure bbCloseClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private procedure CMDialogKey(var message: TCMDialogKey); message CM_DIALOGKEY; public end; var FmPreview: TFmPreview; implementation uses Main; {$R *.DFM} procedure TFmPreview.FormShow(Sender: TObject); begin QRPreview1.Zoom := 100; {defaults to ZoomIn} Label1.caption := 'Page 1 of ' +inttostr(QRPrinter.PageCount); if QRPrinter.PageCount = 1 then bbNext.enabled := false else bbNext.enabled := true; bbClose.setfocus; bbZoomIn.enabled := false; bbZoomW.enabled := true; bbZoomOut.enabled := true; end; procedure TFmPreview.bbZoomOutClick(Sender: TObject); begin QRPreview1.ZoomToFit; bbZoomOut.enabled := false; bbZoomW.enabled := true; bbZoomIn.enabled := true; bbClose.setfocus; end; procedure TFmPreview.bbZoomWClick(Sender: TObject); begin QRPreview1.ZoomToWidth; bbZoomW.enabled := false; bbZoomOut.enabled := true; bbZoomIn.enabled := true; bbClose.setfocus; end; procedure TFmPreview.bbPrevClick(Sender: TObject); begin {Previous page} if QRPreview1.PageNumber > 1 then QRPreview1.PageNumber := QRPreview1.PageNumber-1; Label1.caption := 'Page ' + inttostr(QRPreview1.PageNumber)+ ' of ' +inttostr(QRPrinter.PageCount); bbNext.enabled := true; if QRPreview1.PageNumber = 1 then begin bbPrev.enabled := false; bbNext.setfocus; end; end; procedure TFmPreview.bbNextClick(Sender: TObject); begin {Next page} if QRPreview1.PageNumber < QRPrinter.PageCount then QRPreview1.PageNumber := QRPreview1.PageNumber+1; Label1.caption := 'Page ' + inttostr(QRPreview1.PageNumber)+ ' of ' +inttostr(QRPrinter.PageCount); bbPrev.enabled := true; if QRPreview1.PageNumber = QRPrinter.PageCount then begin bbNext.enabled := false; bbPrev.setfocus; end; end; procedure TFmPreview.bbPrintClick(Sender: TObject); begin {A PrintDialog component can be added to the form with an - if not PrintDialog1.execute then exit - statement placed here.} screen.cursor := crHourglass; try QRPrinter.Print; while tag > 1 do begin QRPrinter.Print; tag := tag-1; end; tag := 1; finally screen.cursor := crDefault; end; close; end; procedure TFmPreview.bbZoomInClick(Sender: TObject); begin QRPreview1.Zoom := 100; bbZoomIn.enabled := false; bbZoomW.enabled := true; bbZoomOut.enabled := true; bbClose.setfocus; end; procedure TFmPreview.bbCloseClick(Sender: TObject); begin close; end; procedure TFmPreview.FormActivate(Sender: TObject); var TrayHwnd: HWnd; Rect: TRect; CxFullScreen, CyFullScreen, CyCaption: integer; begin {size the form to fill the screen...} TrayHwnd := FindWindow('Shell_TrayWnd',''); if TrayHwnd = 0 then {not Win95 screen} WindowState := wsMaximized else begin GetWindowRect(TrayHwnd,Rect); CxFullScreen := GetSystemMetrics(SM_CXFULLSCREEN); CyFullScreen := GetSystemMetrics(SM_CYFULLSCREEN); CyCaption := GetSystemMetrics(SM_CYCAPTION); {NOTE: Position must equal either poDefault or poDesigned, and WindowState = wsNormal} Top := 0; Left := 0; Width := CxFullScreen; Height := CyFullScreen + CyCaption; if (Rect.Top < 0) and (Rect.Left < 0) then begin {Taskbar on either top or left} if Rect.Right > Rect.Bottom then {Taskbar on top} Top := Rect.Bottom else {Taskbar on left} Left := Rect.Right; end; end; bbClose.left := width - 76; bbPrint.left := width - 144; end; procedure TFmPreview.FormClose(Sender: TObject; var Action: TCloseAction); begin QRPreview1.PageNumber := 1; {this is necessary if reopening form!!!?} bbPrev.enabled := false; QRPreview1.HorzScrollbar.Position := 0; QRPreview1.VertScrollbar.Position := 0; end; procedure TFmPreview.CMDialogKey(var message: TCMDialogKey); begin {INTERCEPTS ARROW KEYS INORDER TO MOVE AROUND PAGE} with message do case CharCode of VK_LEFT: begin with QRPreview1.HorzScrollbar do Position := Position -50; exit; end; VK_RIGHT: begin with QRPreview1.HorzScrollbar do Position := Position +50; exit; end; VK_UP: begin with QRPreview1.VertScrollbar do Position := Position -50; exit; end; VK_DOWN: begin with QRPreview1.VertScrollbar do Position := Position +50; exit; end; end; inherited; end; procedure TFmPreview.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin {INTERCEPTS [PG_UP],[PG_DN], [CTRL][PG_UP],[CTRL][PG_DN], [HOME],[END]} if (((Key = VK_NEXT) and (Shift = [ssCtrl])) or (Key = VK_END)) and bbNext.enabled then begin QRPreview1.PageNumber := QRPrinter.PageCount; {GOTO LAST PAGE} Label1.caption := 'Page ' + inttostr(QRPrinter.PageCount)+ ' of ' +inttostr(QRPrinter.PageCount); bbPrev.enabled := true; bbNext.enabled := false; bbPrev.setfocus; end else if (((Key = VK_PRIOR) and (Shift = [ssCtrl])) or (Key = VK_HOME)) and bbPrev.enabled then begin QRPreview1.PageNumber := 1; {GOTO FIRST PAGE} Label1.caption := 'Page 1' + ' of ' +inttostr(QRPrinter.PageCount); bbPrev.enabled := false; bbNext.enabled := true; bbNext.setfocus; end else if (Key = VK_NEXT) and bbNext.enabled then bbNextClick(Sender) else if (Key = VK_PRIOR) and bbPrev.enabled then bbPrevClick(Sender); end; end. abraço olá amigo, obrigado pela resposta ao tópico.... entendi essa paradinha de criar personalizado... mas, esse preview pronto, para alterar somente a forma de exibição é possível ou não? é que na verdade esse projeto tem que ser entregue segundona e tem várias coisas ainda pra terminar... ai se tiver como dessa vez iria facilitar... obrigado pela atenção!
-
pessoal, fiz aqui tudo certinho no QR e beleza, ele fltra os dados do BD e exibe para imprimir somente o que o usuario desejar... até ai belezinhaa!! o problema é que no preview antes de imprimir aparece em zoom to width porém eu queria que ficasse sempre em 100%... como fazer isso? obrigado!
-
olá pessoal, gostaria de pedir aos administradores se podem, por favor, mudar o meu nome de exibição aqui no fórum... por motivos particulares/profissional mudem por gentileza para dan_visualdm obrigado pela atenção!
-
procure no google como criar radio on-line utilizando o winamp
-
olá pessoal, aqui no sistema que estou fazendo gostaria de ter em um determinado lugar a informação de quantos registros tem numa determinada tabela do meu BD... por exemplo, 1.974 clientes cadastrados (e ai se deletar ou se inserir cliente ir subtraindo ou somando e exibindo essa informação).... seria então uma função que conte quantos registros existe na tabela do bd... mas... como fazer isso? obrigado!!!
-
olá... eu testei desse jeito mais num deu muito certo não... ai pesquisando encontrei a seguinte solução: Todas as opções de menu do TMenuItem possuem uma propriedade name que você seta para acessar diretamente o item do menu em runtime e poder setar suas propriedades de visible e enabled por exemplo para true ou false... dê uma olhada no seu menu e vai encontrar no object inspector o nome do item de menu. obrigado!
-
opaa... estou usando o access 2000... hoje anoite vou testar e amanhã já posto aqui o resultado! valews... braços!
-
olá pessoal... estou com um probleminha aqui.... vamos lá... Estou criando um sistema em delphi 7, este sistema já roda legalzinho e está quase finalizado, porém ainda tem uma falha: o meu banco é access que roda em multiusuário em rede e não estou conseguindo proteger o banco dos usuários da rede. Gostaria de proteger o meu banco caso alguém queira acessa-lo diretamente pelo access. Tentei criar uma senha de proteção direto no access, porém quando minha aplicação roda, diz que o banco já está em modo exclusivo e ninguém mais consegue manipula-lo. Como proteger meu banco e mesmo assim disponibilizar a conexão do meu sistema que não dê modo exclusivo? Estou usando conexão ADO obrigado!!!