Ir para conteúdo
Fórum Script Brasil

Vivendo&Aprendendo

Membros
  • Total de itens

    856
  • Registro em

  • Última visita

Tudo que Vivendo&Aprendendo postou

  1. Ae galera muito obrigado pela ajuda de todos consegui encontrar o erro. Foi o seguinte eu já usei o relatório Fortes Report e havia em um dos meus relatórios uma unit do fortes na uses RLReport por isso estava dando o erro. mas sobre o link não baixa mesmo na minha máquina, está dando erro dizendo que o site não está disponível ou não pode ser encontrado. Se você tiver essa instalação ai será que pode me enviar por e-mail? Mais uma vez obrigado... Abraços
  2. O Micheus mas eu instalei o Quick certinho e depois só atualizei ele para outra versão mais nova que a original porém não é essa ai que você falou, inclusive essa ai não está baixando. Abraços
  3. Precisei desinstalar o delphi e instalar novamente e na hora que abri minha aplicação e fui compilar apareceu esses erros: Como resolvo e o que é isso? Abraços
  4. Bom Jhonas tenho que te agradecer pela paciência, mas antes de enviar seu último post, eu deu mais uma pesquisada em outros foruns e na net e consegui resolver o meu problema, segue abaixo o código de envio pelo gmail com anexos para qualquer outro e-mail: Muito obrigado pela ajuda e agora vou melhorar ele... Abraços
  5. Bom esses ai são os comandos que encontrei em um exemplo.... O que está faltando?
  6. Olá Atualizei o meu Indy para a versão 9.0.18 que segundo um membro de outro forum é a mais confiável, baixei as dll's de acesso, mas continua dando o erro citado abaixo Está dando o seguinte erro agora quando clico em enviar: Socket Error #10049 Cannot assing request address: Não pode atribuir o endereço do pedido Segue abaixo o código que eu estou usando: unit UEmail; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP, IdBaseComponent, IdMessage, StdCtrls, Buttons, IdIOHandler, IdIOHandlerSocket, IdSSLOpenSSL, IdPOP3; type TForm1 = class(TForm) Label3: TLabel; mmMensagem: TMemo; BtEnviar: TBitBtn; odAnexos: TOpenDialog; IdMessage: TIdMessage; IdSMTP: TIdSMTP; IdPOP31: TIdPOP3; IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocket; EdtPara: TEdit; EdtCC: TEdit; EdtCCO: TEdit; EdtAssunto: TEdit; Label1: TLabel; Label2: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; cbxPrioridade: TComboBox; cbxConfirmaLeitura: TCheckBox; Button1: TButton; Label7: TLabel; ListBox1: TListBox; procedure Button1Click(Sender: TObject); procedure BtEnviarClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin if odAnexos.Execute then ListBox1.Items.Add(odAnexos.FileName); end; procedure TForm1.BtEnviarClick(Sender: TObject); var xAnexo : Integer; begin IdMessage.Recipients.EMailAddresses := edtPara.Text; IdMessage.CCList.EMailAddresses := edtCC.Text; IdMessage.BccList.EMailAddresses := edtCCO.Text; //Trata a Prioridade da mensagem case cbxPrioridade.ItemIndex of 0 : IdMessage.Priority := mpHigh; 1 : IdMessage.Priority := mpNormal; 2 : IdMessage.Priority := mpLow; end; IdMessage.Subject := edtAssunto.Text; IdMessage.Body := mmMensagem.Lines; if cbxConfirmaLeitura.Checked then IdMessage.ReceiptRecipient.Text := IdMessage.From.Text; // Auto Resposta //Tratando os arquivos anexos for xAnexo := 0 to ListBox1.Items.Count-1 do TIdAttachment.create(idmessage.MessageParts, TFileName(ListBox1.Items.Strings[xAnexo])); IdSMTP.Connect; try IdSMTP.Send(IdMessage); finally IdSMTP.Disconnect; end; Application.MessageBox('Email enviado com sucesso!', 'Confirmação', MB_ICONINFORMATION + MB_OK); end; end. O que vocês me aconselha a fazer? Abraços
  7. Esse smtp.live.com é do hotmail o do gmail é smtp.gmail.com, mas não da certo mandar para nenhum e-mail... da o mesmo erro. Desculpa abusar da sua paciência, mas poderia fazer um modelo bem simples ai pra mim... mandando para qualquer e-mail Abraços
  8. Cara ta certo... Gmail porta 465 hotmail porta 25, mas ainda da o erro. O código que estou usando está dessa forma: {Configuração do IdMessage (dados da mensagem)} IdMessage.From.Address := e-mail do remetente (hotmail) IdMessage.Recipients.EMailAddresses := e-mail do destinatário (hotmail e Gmail) IdMessage.Subject := Assunto IdMessage.Body.Add(mmMensagem.text); //Corpo da mensagem {Configuração do IdSMTP (dados do servidor de email} //anexar TIdAttachment.Create(IdMessage.MessageParts, 'c:\teste.txt'); //IdSMTP1.BoundIP := '201.00.999.888'; {Endereço IP da sua Maquina no momento} IdSMTP.Host := 'smtp.live.com'; IdSMTP.Port := 25; IdSMTP.Username := Login do usuário (rementente) IdSMTP.Password := Senha do usuário (remetente) IdSMTP.AuthenticationType := atLogin; //tipo da autenticação IdSMTP.Connect; //Estabelece a conexão [b] IdSMTP.Authenticate; //Faz a autenticação[/b] try IdSMTP.Send(IdMessage); showmessage('Ok. Mesagem Enviada com Sucesso.'); //Envia a mensagem except showmessage('ERRO. Não enviado.'); //Mensagem de erro end; IdSMTP.Disconnect; Quando mando para Gmail mudo a porta para 465 Da erro na linha em negrito. Mas agora o erro é esse: 5.7.0 Must issue a STARTTLS command first a5sm9996504qbd.17 Abraços
  9. É que pelo outlook eu mando para outro email... vou verificar essas informações e qualquer duvida eu posto aqui... E sobre esse erro o que é? obrigado
  10. Olá Jonas Fiz esses comando já mas da o seguinte erro agora... Socket error # 11004 Preciso manda para hotmail e gmail. Como faço isso, não sei as portas nem o smtp e pop deles. Alexandre
  11. Olá galera... Preciso fazer um envio de e-mail na minha aplicação, eu fiz ele enviando pelo outlook mas quero fazer para ele enviar sem precisar de outro programa, então pesquisei e vi que o indy faz isso e a paleta fastnet também. Com o indy eu não consegui, está dando erro e gostaria de saber como faço para instalar a paleta FastNet no delphi 7. Por favor alguém ai me ajuda... Abraços Alexandre
  12. Ae pessoal, encontrei uma descrição das máscaras utilizadas e consegui resolver o meu problema.... Segue abaixo a lista de definições dos caracteres utilizados nas máscaras: Caracter Definições ! Faz com que a digitação da máscara fique parada no primeiro caracter, fazendo com que os caracteres digitados que se movam. Ex: !;0;_ > Todos os caracteres digitados serão convertidos para maiúsculas. Ex: >aaa;0;_ < Todos os caracteres digitados serão convertidos para minúsculas. Ex: <> Anula o uso dos caractes > e <, ou seja, utilizado para cancelar a opção de máscara para os caracteres a direita. Ex: >aaa<>aaa;0;_ \ Utilizado para marcar determinado caracter não especial como fixo. Ex: !\(999\)000-0000;0;_ L Exige caracteres alfabéticos obrigatórios para a posição, do tipo A-Z, a-z. Ex: LLL;1;_ l Somente caracteres alfabéticos para a posição, mas não-obrigatórios, do tipo A-Z, a-z. Ex: lll;1;_ A Exige caracteres alfanuméricos obrigatórios para a posição, do tipo A-Z, a-z, 0-9. Ex: AAA;1;_ a Somente caracteres alfanuméricos para a posição, mas não-obrigatórios, do tipo A-Z, a-z, 0-9. Ex: aaa;1;_ C Requer um caracter obrigatório para a posição. Ex: CCC;1;_ c Permite o uso de qualquer caracter para a posição, limitando apenas o número de caracteres. Ex: ccc;1;_ 0 Exige caracteres numéricos obrigatórios para a posição, do tipo 0-9. Ex: 000;1;_ 9 Somente caracteres numéricos para a posição, não-obrigatórios, do tipo 0-9. Ex: 999;1;_ # Somente caracteres numéricos para a posição e o uso dos sinais de - ou +, não-obrigatórios. Ex: ###;1;_ : Utilizado como separador de horas, minutos e segundos. / Utilizado como separador de dia, mês e ano. Abraços Alexandre
  13. E ae pessoal! Tenho um sistema de fábrica de placas para veículos, e na saídas o usuário digita o número da placa (por exemplo ABC-0000), uso um campo tipo texto no banco de dados Access, agora eu preciso fazer com que antes do sinal ( - ) ele somente permita a digitação de letras e após o sinal somente números. Eu coloquei a seguinte mascara no campo do Ado AAA-0000;1;_ ele aceita no lugar dos números apenas números, mas nas letras ele aceita tanto letra como número. Como posso fazer isso sem ter que criar dois campos no banco de dados, preciso fazer usando o mesmo campo. Abraços Alexandre
  14. Olá Raphael_suporte eu baixei vários programas, um deles é o Languard, mas todos eles só me retornam o modem e o meu computador e eu sei que no momento tem mais máquinas ligadas na rede... Qual programa você me indicaria? Ou se você tem algum tutorial desse languard em português... Abraços
  15. Ae galera tenho uma rede onde é compartilhada a internet, e preciso saber qtos computadores estão conectados e está rede, independente do grupo de trabalho, faixa de ip, se estão em outro hub, etc... preciso saber com precisão qtos estão usando a internet... obrigado alexandre
  16. Olá Micheus, muito obrigado pela sua dica e ai vai mais um relatório do mesmo problema: No form de cheques, que eu perguntei acima ele parou de dar o problema sozinho não fiz absolutamente nada. E ele dá o erro também no form de entradas, segue abaixo os códigos e procedimentos deste form. No OnClick do botão inserir no form principal: //FrmEntradas If ActiveMDIChild = FrmEntradas Then begin DmDados.Entradas.Close; DmDados.Entradas.SQL.Clear; DmDados.Entradas.SQL.Add('Select * From Entradas'); DmDados.Entradas.SQL.Add('Order By Codigo'); DmDados.Entradas.Open; DmDados.Log.Active := True; DmDados.Log.Append; DmDados.LogUsuario.value := Usu; DmDados.LogDataHora.Value := DateToStr(Date)+' - '+TimeToStr(Time); DmDados.LogAcessos.Value := DmDados.LogAcessos.Value + 'Entradas (Inserir); '; DmDados.Log.Post; DmDados.Log.Active := False; for i := 0 to FrmEntradas.ComponentCount - 1 do if FrmEntradas.Components[i] is TCustomEdit then begin (FrmEntradas.Components[i] as TCustomEdit).Enabled := True; FrmEntradas.EdtCodigo.Enabled := False; FrmEntradas.EdtDataEntrada.Enabled := False; FrmEntradas.EdtDescricao.Enabled := False; FrmEntradas.EdtEstoque.Enabled := False; FrmEntradas.EdtValorTotal.Enabled := False; end; DSBotoes.DataSet.Append; FrmEntradas.EdtDataEntrada.Text := DateToStr(Date); FrmEntradas.EdtLocaliza.SetFocus; end; A respeito da manipulação dos campos, para elas ficarem fora do loop estou alterando... No OnEnter do campo que recebe o foco ao clicar no Inserir (código acima): procedure TFrmEntradas.EdtLocalizaEnter(Sender: TObject); begin If (DmDados.Entradas.State in [dsInsert, dsEdit]) Then begin FrmPrincipal.DSBotoes.DataSet.Post; DmDados.Log.Active := True; DmDados.Log.Append; DmDados.LogUsuario.value := Usu; DmDados.LogDataHora.Value := DateToStr(Date)+' - '+TimeToStr(Time); DmDados.LogAcessos.Value := DmDados.LogAcessos.Value + 'Entradas (Salvar); '; DmDados.LogMovimento.Value := 'Código: '+EdtCodigo.Text; DmDados.Log.Post; DmDados.Log.Active := False; end; If not (ADOItensEntradas.State in [dsInsert, dsEdit]) Then begin ADOItensEntradas.Append; Cod := StrToInt(EdtCodigo.Text); ADOItensEntradasCodigoEntrada.Value := DmDados.EntradasCodigo.Value; end; end; No OnExit do campo que recebe o foco ao clicar no Inserir... procedure TFrmEntradas.EdtLocalizaExit(Sender: TObject); begin If PnProdutos.Top <> 0 Then begin If (EdtLocaliza.Text <> '') Then begin If not ADOProdutos.Locate('Codigo',EdtLocaliza.Text,[loCaseInsensitive,loPartialKey]) Then begin Application.MessageBox('Produto não cadastrado!','Atenção',mb_IconExclamation +mb_ok); EdtLocaliza.Clear; EdtLocaliza.SetFocus; end; end else If (Tecla <> VK_F2) Then begin Application.MessageBox('Favor preencha o campo Cód. do Produto!','Atenção',mb_IconExclamation +mb_ok); EdtLocaliza.SetFocus; end else begin DmDados.Entradas.Post; end; end; end; E pra finalizar no OnKeyDown do mesmo edit (que recebe o foco ao clicar no Inserir)... //F9 abre o panel de produtos procedure TFrmEntradas.EdtCodProdutoKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState); Var ValorTotal : Real; Cont, Fim, i : Integer; begin If Key = VK_F9 Then begin PnProdutos.Top := 0; EdtBuscaProdutos.SetFocus; end; If Key = VK_F2 then begin Tecla := Word(ORD(Key)); If Application.MessageBox('Deseja realmente FINALIZAR A VENDA?','Alerta',mb_IconEXCLAMATION +MB_YESNO)=6 then begin If (DmDados.Saidas.State in [dsInsert, dsEdit]) Then DmDados.Saidas.Cancel; If (ADOItensEntradas.State in [dsInsert, dsEdit]) Then ADOItensEntradas.Cancel; //calcula o valor total da Saida e os registros Cont := 0; ValorTotal := 0; Fim := 0; ADOItensEntradas.First; Fim := ADOItensEntradas.RecordCount; With ADOItensEntradas Do begin While Cont < Fim Do begin If ADOItensEntradasCodigoEntrada.Value = StrToInt(EdtCodigo.Text) Then ValorTotal := ValorTotal + ADOItensEntradasValorTotalProduto.Value; Cont := Cont + 1; ADOItensEntradas.Next; end; end; DmDados.Entradas.Refresh; DmDados.Entradas.Locate('Codigo', Cod,[LoCaseInsensitive]); DmDados.Entradas.Edit; DmDados.Entradas.FieldByName('TotalItens').AsInteger := Fim; DmDados.Entradas.FieldByName('ValorTotalNf').AsCurrency := ValorTotal; //A tabela de saidas esta sendo salva no botão finalizar DmDados.Produtos.Close; DmDados.Produtos.Open; //desabilita os campos após ser salvo for i := 0 to FrmEntradas.ComponentCount - 1 do begin if FrmEntradas.Components[i] is TCustomEdit then begin (FrmEntradas.Components[i] as TCustomEdit).Enabled := False; end; end; DmDados.ItensEntradas.Close; DmDados.ItensEntradas.Open; end; end; end; Como pode ver são três procedimentos acionados no mesmo componente (Edit), será que pode ser isso, qual dica você pode me dar... Abraços Alexandre
  17. Olá Denis Courcy! Eu utilizo o access, e todas as linhas e colunas são identicas... mas ele esta me retornando 3 linhas iguais, que relamente existem, mas que quero apenas uma... Alexandre
  18. Olá pessoal estou usando uma sql para busca, ela esta funcionando certinho, mas o distinct não esta fazendo nada, quem puder me ajudar. DmDados.Saidas.Close; DmDados.Saidas.SQL.Clear; DmDados.Saidas.SQL.Add('SELECT Distinct(ItensSaidas.CodigoSaidas), Saidas.Codigo, Saidas.DataSaida,'); DmDados.Saidas.SQL.Add('Saidas.NPedido, Saidas.CodCliente, Saidas.Cliente, Saidas.FormaPgto, Saidas.TipoPgto,'); DmDados.Saidas.SQL.Add('Saidas.DataVencimento, Saidas.ValorRecebido, Saidas.Desconto, Saidas.Troco,'); DmDados.Saidas.SQL.Add('Saidas.ValorTotalNF, Saidas.TotalItens,'); DmDados.Saidas.SQL.Add('ItensSaidas.CodigoSaidas, ItensSaidas.CodProduto, ItensSaidas.Descricao,'); DmDados.Saidas.SQL.Add('ItensSaidas.Qtde, ItensSaidas.Placa, ItensSaidas.LocalPlaca, ItensSaidas.Cidade,'); DmDados.Saidas.SQL.Add('ItensSaidas.ValorUnit, ItensSaidas.ValorTotalProduto'); DmDados.Saidas.SQL.Add('FROM Saidas INNER JOIN ItensSaidas ON Saidas.Codigo = ItensSaidas.CodigoSaidas'); DmDados.Saidas.SQL.Add('Where NPedido Like :pNPed '); DmDados.Saidas.SQL.Add('Order By Codigo'); DmDados.Saidas.Parameters[0].Value := EdtBusca.Text + '%'; DmDados.Saidas.Open;
  19. Olá Micheus... Também, você chama o método Append (DsBotoes.DataSet.Append) fora o if onde você testou o FrmCheques, o que quer dizer que o dataset que está ligado a FrmPrincipal.DSBotoes.DataSet não necessariamente é o esperado, caso o evento OnActivate ocorra antes deste procedimento ser executado. Veja o código novamente: //FrmCheques If ActiveMDIChild = FrmCheques Then begin DmDados.Log.Active := True; DmDados.Log.Append; DmDados.LogUsuario.value := Usu; DmDados.LogDataHora.Value := DateToStr(Date)+' - '+TimeToStr(Time); DmDados.LogAcessos.Value := DmDados.LogAcessos.Value + 'Cheques (Inserir); '; DmDados.Log.Post; DmDados.Log.Active := False; for i := 0 to FrmCheques.ComponentCount - 1 do if FrmCheques.Components[i]is TCustomEdit then begin (FrmCheques.Components[i] as TCustomEdit).Enabled := True; FrmCheques.DBCbbCheques.Enabled := True; FrmCheques.EdtCodigo.Enabled := False; end; DsBotoes.DataSet.Append; FrmCheques.EdtDataRec.SetFocus; end; Bom método Append esta dentro do If que testa o Form sim, ele esta fora do If que testa os componentes do form, mas não do If que testa a ativação do form. O motivo de entrar em modo edição, poderia ser justamente porque o form é ativado após o processamento da procedure que o colocaria em Inserção. E sempre o comando de iserção é ocorrido depois do evento OnActivate do form cheques, pois tenho que abri-lo primeiro para depois o botão de inserir aparecer e eu utilizá-lo. Se você souber depurar o programa, poderá colocar um break-point na linha do Append (por ex.) e verificar qual o dataset que está ligado a FrmPrincipal.DSBotoes.DataSet antes de executá-lo (utilizar CTRL+F7 para inspecionar a propriedade FrmPrincipal.DSBotoes.DataSet.Name) Cara fiz o break point e ele não me da resultado nenhum quando paro o mouse sobre a linha de comando. E o interessante é que eu utilizo o mesmo procedimento para todos os meus forms e não ocorre esses erros nos outros. Abraços Alexandre
  20. Olá eu utilizo da seguinte forma para descobrir os dias entre duas datas: procedure TForm1.EdtDataFinalExit(Sender: TObject); var v : extended; begin v := strtodate(EdtDataInicial.text) - strtodate(EdtDataFinal.text); If StrToDate(EdtDataInicial.Text) > StrToDate(EdtDataFinal.Text) Then begin Application.MessageBox('A data inicial não pode ser maior que a data final!','Atenção',mb_IconExclamation +mb_ok); EdtDataInicial.SetFocus; end else EdtDias.text := Floattostr(Abs(v)); end; No meu caso ele retorna quantos dias existem entre a data inicial e a data final, para mim resolveu, não sei se é o seu caso mas ai esta... Qualquer coisa posta ai.. Abraços Alexandre
  21. Você diz por exemplo, pegar o form de clientes e salvar ele com o nome do form com problema e ai fazer as alterações para esse form se tornar o de Cehques que esta com o problema por exemplo? É isso? Alexandre
  22. Bom Jonas... No evento OnClick do botão Inserir eu tenho esse código: //FrmCheques If ActiveMDIChild = FrmCheques Then begin DmDados.Log.Active := True; DmDados.Log.Append; DmDados.LogUsuario.value := Usu; DmDados.LogDataHora.Value := DateToStr(Date)+' - '+TimeToStr(Time); DmDados.LogAcessos.Value := DmDados.LogAcessos.Value + 'Cheques (Inserir); '; DmDados.Log.Post; DmDados.Log.Active := False; for i := 0 to FrmCheques.ComponentCount - 1 do if FrmCheques.Components[i]is TCustomEdit then begin (FrmCheques.Components[i] as TCustomEdit).Enabled := True; FrmCheques.DBCbbCheques.Enabled := True; FrmCheques.EdtCodigo.Enabled := False; end; DsBotoes.DataSet.Append; FrmCheques.EdtDataRec.SetFocus; end; Os botões são utilizados os mesmos para qualquer cadastro, eu coloquei um Data Source no form principal onde fica os botões e abaixo segue a procedure para controlar eles: //Atribui valor False procedure TFrmPrincipal.EstadoBotoes(ed:boolean); begin BtnAlterar.Enabled := ed; BtnSalvar.Enabled := ed; BtnCancelar.Enabled := ed; BtnInserir.Enabled := ed; BtnExcluir.Enabled := ed; BtnPrimeiro.Enabled := ed; BtnAnterior.Enabled := ed; BtnProximo.Enabled := ed; BtnUltimo.Enabled := ed; PnBtns.Visible := ed; end; //Atribui valor True para os BTns procedure TFrmPrincipal.DSBotoesStateChange(Sender: TObject); Var ed : boolean; begin PnBtns.Visible := True; ed := DSBotoes.State in [dsEdit, dsInsert]; BtnSalvar.Enabled := ed; BtnCancelar.Enabled := ed; BtnAlterar.Enabled := not ed; BtnInserir.Enabled := not ed; BtnExcluir.Enabled := not ed; BtnPrimeiro.Enabled := not ed; BtnAnterior.Enabled := not ed; BtnProximo.Enabled := not ed; BtnUltimo.Enabled := not ed; end; Esse é o código que eu uso no form de cadastro para controlar o DataSet do cadastro: procedure TFrmCheques.FormActivate(Sender: TObject); begin FrmPrincipal.DSBotoes.DataSet := DsCheques.DataSet; end; E esse é para desabilitar os botões quando o form for fechado: procedure TFrmCheques.FormClose(Sender: TObject; var Action: TCloseAction); begin If DsCheques.State in [dsInsert, dsEdit] Then DmDados.Cheques.Cancel; FrmPrincipal.EstadoBotoes(false); Action := Cafree; FrmCheques := Nil; end; Esse erro ocorre somente em dois forms, nos outros esta tudo normal, e o mais estranho é que já verifiquei todos os códigos dos forms e estão iguais, tudo normal... Abraços Alexandre
  23. Olá galera! Eu uso botões na minha aplicação que servem para qualquer cadastro, tipo eles ficam na barra abaixo do Menu e qualquer tela pode usar os mesmos botões. Eu faço isso com o código abaixo. Neste caso ele esta dando um append na tabela de cheques. O meu problema é o seguinte, quando eu clico em Insert para adicionar um novo registro, somente nesta tela ele esta entendendo como um Edit e só da o Append definitivo quando clico novamente no botão. Alguém ai pode me ajudar com isso. Já revirei o código e não achei nada de anormal. Abraços Alexandre
  24. Qual banco você usa? Qual componente para conexão? E como esta salvando o registro? Abraços Alexandre
×
×
  • Criar Novo...