-
Total de itens
9.657 -
Registro em
Tudo que Jhonas postou
-
Outra idéia é assim que o usuário clicar com o mouse no registro escolhido, voce pode jogar esse registro para outro dbgrid onde terá apenas os registros que ele selecionou abraço
-
(Resolvido) Problemas com indices em tabelas filhas
pergunta respondeu ao nicolasbraz de Jhonas em Delphi, Kylix
Então na hora de montar o QuickReport use uma banda QRGroup para a tabela SaidaPai e na banda de Detail use a tabela saidaproduto Na propriedade Expresion do QRGroup voce coloca o nome do campo que é distinto para cada registro ... dessa maneira os registros da tabela SaidaPai ficarão nesta banda e na banda Detail ficarão os produtos referentes a esse registro voce encontrará no forum outros assuntos relacionados http://scriptbrasil.com.br/forum/index.php...ighlite=QRGroup abraço -
Erro de conversão de tipos ... quando a mensagem é ... "00:01:22" não é um valor valido de ponto flutuante significa que voce não pode somar por exemplo 5,60 + 00:01:22 entendeu ? o valor 00:01:22 deveria ser convertido para um valor real exemplo : converter o tempo em segundos e depois executar a soma abraço
-
Quando for inserir um novo registro faça o ponteiro ir para o ultimo registro da tabela dmdados.tblFerramentas.Last; dmdados.tblFerramentas.Append; abraço
-
Dá pra ser mais claro ? não dá pra advinhar o que voce esta querendo abraço
-
(Resolvido) Problemas com indices em tabelas filhas
pergunta respondeu ao nicolasbraz de Jhonas em Delphi, Kylix
Se a tabela estiver fechada, continuara dando este erro cadastro de obras e os materiais que são lançados nessa obra precisam ficar em ordem de data São 2 tabelas ? como estão relacionadas ? -
2 possibilidades 1 - usar comandos da propria impressora para resetar a posição do papel na impressora 2 - configurar o tamanho do papel que voce definiu no seu report OBS: é tambem necessario colocar este comando no evento OnBeforePrint do QuickReport uses QRPrntr, Printers; procedure TQRecibo.QuickRepBeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); begin with TQRPrinter.Create do begin QRecibo.PrinterSettings.PaperSize := Custom; // nome do novo papel que foi definido PrinterIndex := QRecibo.PrinterSettings.PrinterIndex; QRecibo.Page.PaperSize := PaperSize; free; end; end; abraço
-
(Resolvido) Problemas com indices em tabelas filhas
pergunta respondeu ao nicolasbraz de Jhonas em Delphi, Kylix
Dmdados.tblsaidaproduto.ClearFields; Dmdados.tblsaidaproduto.Edit; //ou insert Dmdados.tblsaidaproduto.indexname:='saida_produto_data'; Dmdados.tblsaidaproduto.IndexDefs.Update; Eu faria dessa maneira ... acho mais facil abraço -
(Resolvido) Problemas com indices em tabelas filhas
pergunta respondeu ao nicolasbraz de Jhonas em Delphi, Kylix
faltou completar o comando .. é esse mesmo mas se não funcionar tente do outro jeito abraço -
ainda tenho o problema de quando eu desço pela barra vertical o dbgrid vem uma linha me acompanhando eu ano quero essa linha me acompanhando ou que pelo menos não fique selecionada Isso faz parte do componente ... o que voce pode fazer talvez seria deixar a seleção com uma cor mais clara ou somente com uma seleção de borda ( linha fina em volta da celula ) exemplo: procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin If odd(CDS_Cadproduto.RecNo) then begin DBGrid1.Canvas.Font.Color:= clBlack; DBGrid1.Canvas.Brush.Color:= cl3DLight; end else begin DBGrid1.Canvas.Font.Color:= clBlack; DBGrid1.Canvas.Brush.Color:= clWhite; end; if (gdSelected in state) then DBGrid1.Canvas.Font.Color:= clred else DBGrid1.Canvas.Font.Color:= clBlack; DBGrid1.Canvas.FillRect(Rect); DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; abraço
-
(Resolvido) Problemas com indices em tabelas filhas
pergunta respondeu ao nicolasbraz de Jhonas em Delphi, Kylix
Tente assim Dmdados.tblsaidaproduto.Clear; Dmdados.tblsaidaproduto.indexname:='saida_produto_data'; Dmdados.tblsaidaproduto.IndexDefs.Update; Se não funcionar, use relacionamento entre tabelas e filtre os registros na SQL abraço -
Socket Error #10061 Connection refused Conexão Recusada... um ou mais parametros de configuração estão incorretos exemplo: procedure TForm1.Button1Click(Sender: TObject); begin //Configuração do IdMessage (dados da mensagem) IdMessage1.From.Address := 'fulano@bol.com.br'; //e-mail do remetente IdMessage1.Recipients.EMailAddresses := 'sicrano@bol.com.br';//e-mail do destinatário IdMessage1.Subject := 'Assunto do e-mail'; //Assunto IdMessage1.Body.Add('Mensagem do e-mail'); //Corpo da mensagem //Configuração do IdSMTP (dados do servidor de email) IdSMTP1.BoundIP := '200.70.160.140'; //Endereço IP da sua Maquina no momento IdSMTP1.Host := 'smtps.bol.com.br'; //Host SMTP do bol IdSMTP1.Port := 25; //Port do bol IdSMTP1.Username := 'fulano@bol.com.br'; //Login do usuário IdSMTP1.Password := 'senha'; //Senha do usuário IdSMTP1.AuthenticationType := atLogin; //tipo da autenticação IdSMTP1.Connect; //Estabelece a conexão IdSMTP1.Authenticate; //Faz a autenticação try IdSMTP1.Send(IdMessage1); //Envia a mensagem except showmessage('ERRO'); //Mensagem de erro end; end; OBS: Uso este para enviar email pelo bol .. funciona sem problemas abraço
-
'select '+ 'left(inicio, 10) as data, '+ ' right(''0000''+cstr( (24*int(sum(Tempo_de_Ligação))) + datepart(''h'', cdate(sum(Tempo_de_Ligação)))), 4)+'':''+ '+ 'right(cdate(sum(Tempo_de_Ligação)), 5) as horastotais '+ 'from '+ 'chamadas '+ ' group by '+ ' left(inicio, 10) '; voce tem que refazer essa Select pois ela está errada em sua estrutura ... veja se consegue ( pense ) abraço
-
Verifique primeiramente se existe a conexão com a internet ( pode ocorrer esse erro se não houver conexão ) caso exista essa conexão, verifique o host do componente IdSMTP. Errado : smtp.bol.com.br // gera o erro Erro Socket # 11004 Correto :smtps.bol.com.br // o email foi enviado com sucesso. abraço
-
(Resolvido) Erro de violação insuportavel
pergunta respondeu ao robinhocne de Jhonas em Delphi, Kylix
primeiro voce deve deixar como comentario as rotinas que voce usa para fazer algum tratamento interno em um Dataset ... e veja o que acontece... se o erro parar voce terá achado onde está o problema abraço -
Não ... pode ficar tranquilo. abraço
-
Se puder prefira a ASUS ... voce não terá dores de cabeça depois e não vai se arrepender de ter escolhido esta placa abraço
-
Performaced DDR Timming Enabled Esta é uma mensagem da BIOS indicando que está habilitado o Cronometro de performance da DDR isso não é erro ... se não quiser que fique aparecendo ... entre na BIOS e desabilite esta opção abraço
-
Minha placa mãe torrou e eu preciso comprar outra urgente. Fiz uma busca em algumas lojas e descobri que nem toda plca mãe aceita amd ou intell. Quais placa mães aceita amd e/ou intel? Existe asus que pega amd? Duas otimas placas Asus que aceita processador AMD http://www.precomania.com/search_getprod.p...roduct/sv=title http://www.precomania.com/search_getprod.p...roduct/sv=title abraço
-
(Resolvido) Erro de violação insuportavel
pergunta respondeu ao robinhocne de Jhonas em Delphi, Kylix
Isso é erro de violação de endereço de memória.... durante a execução uma de suas rotinas, ele está tentando atribuir um valor a um endereço de memória ocupado por outro valor. verifique as rotinas de operação interna dentro do Dataset abraço -
pelo que entendi, voce esta trabalhando com datas e horas ...certo ? a minha sugestão é para voce criar primeiro uma select para selecionar o perido de datas que voce quer exe: 01/01/2009 a 01/02/2009 .... coms os registros selecionados voce pode calcular o somatório das horas se não for isso ... poste como esta os dados em sua tabela e como quer trabalhar com os registros abraço
-
Já imaginava que voce não ia conseguir .... vou te dar uma colher de chá ... não uma de sopa ...não melhor uma de pegar feijão ..rs unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ListBox1: TListBox; Button2: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; datas: array of string; //vetor de string implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var i: Integer; valor, s: string; indice: Integer; ok: Boolean; begin //aloca espaço para os itens no vetor SetLength(datas,ListBox1.Items.Count); // retira parte da string e converte para data for i := 0 to ListBox1.Items.Count -1 do begin s := copy(ListBox1.Items.Strings[i],7,8); insert('/',s,3); insert('/',s,6); datas[i] := 'backup'+(formatdatetime('dd/mm/yyyy',strtodate(s)))+'.zip'; end; // faz a ordenação repeat ok := False; indice := 0; repeat if CompareStr(datas[indice], datas[indice + 1]) = 2 then begin valor := datas[indice]; datas[indice] := datas[indice + 1]; datas[indice + 1] := valor; ok := True; end; Inc(indice); until(indice > High(datas)); until(ok = False); // fim ordenação // exibe o array ordenado no proprio listbox ListBox1.Clear; for i := Low(datas) to High(datas) do begin delete(datas[i],9,1); delete(datas[i],11,1); ListBox1.Items.Append(datas[i]); end; end; end. OBS: Procure sempre usar a cabeça para tentar descobrir como fazer ( leia tudo o que puder a respeito e pratique sempre no computador ) abraço
-
Na Query a propriedade RequestLive deverá estar como true procedure TF_ImportaMorador.DBGrid1CellClick(Column: TColumn); begin DMConsultas.Q_ImportaMorador.Active:=false; DMConsultas.Q_ImportaMorador.Active:=true; if Column.ID = 0 then begin if DMConsultas.Q_ImportaMoradorarquivo.asstring = 'X' then begin DMConsultas.Q_ImportaMorador.Edit; DMConsultas.Q_ImportaMoradorarquivo.asstring := ''; DMConsultas.Q_ImportaMorador.post; DMConsultas.Q_ImportaMorador.ApplyUpdates; end else begin DMConsultas.Q_ImportaMorador.Edit; DMConsultas.Q_ImportaMoradorarquivo.asstring := 'X'; DMConsultas.Q_ImportaMorador.post; DMConsultas.Q_ImportaMorador.ApplyUpdates; end; end; end. Verifique ... porque fiz um teste aqui e funcionou corretamente abraço
-
(Resolvido) Digito a mais ou a menos no campo
pergunta respondeu ao nsouza de Jhonas em Delphi, Kylix
nsouza ... veja um exemplo mais simples unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask; type TForm1 = class(TForm) Button1: TButton; MaskEdit1: TMaskEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} Function ValidarCEP(const CEP: string): string; var I: integer; begin Result := ''; for I := 1 to Length(CEP) do if CEP[I] in ['0'..'9'] then Result := Result + CEP[I]; if Length(Result) <> 8 then begin //ShowMessage('CEP Inválido'); //Form1.MaskEdit1.SetFocus; end else begin Result := Copy(Result, 1, 2) + '.' + Copy(Result, 3, 3) + '-' + Copy(Result, 6, 3); ShowMessage('CEP Válido'); end; end; function FormataCEP(const CEP: string): string; var I: integer; begin Result := ''; for I := 1 to Length(CEP) do if CEP[I] in ['0'..'9'] then Result := Result + CEP[I]; if Length(Result) <> 8 then begin ShowMessage('CEP Inválido'); Form1.MaskEdit1.SetFocus; //raise Exception.Create('CEP inválido.') end else Result := Copy(Result, 1, 2) + '.' + Copy(Result, 3, 3) + '-' + Copy(Result, 6, 3); end; procedure TForm1.Button1Click(Sender: TObject); begin MaskEdit1.Text := FormataCEP(MaskEdit1.Text); ValidarCEP(MaskEdit1.Text); end; end. Se voce digitar no MaskEdit1 menos de 8 digitos ou mais de 8 .. aparecerá a mensagem de CEP Inválido e o cursor voltará ao MaskEdit1 para digitar novamente abraço -
Copia do Arquivo TXT variavel (configuravel)
pergunta respondeu ao pimpocvl de Jhonas em Delphi, Kylix
obs.: este arquivo TXT não possui tabulação. Se o arquivo Txt não tiver uma tabulação, fica muito mais dificil copiar dados do arquivo TXT para uma tabela poste um exemplo desse arquivo