
Micheus
Veteranos-
Total de itens
3.189 -
Registro em
-
Última visita
Tudo que Micheus postou
-
eu não uso este componente, mas eles costumam ser similares. Entãom além do que o Churc já mencionou, se a questão é fazer uso da tela de login que o componente de conexão pode apresentar, dê uma olhada se não há no componente as propriedades User e Password definidas em design-time e veja se a propriedade LoginPrompt não estaria com False. Esta combinação, faria com que nenhum login fosse solicitado ao abrir a conexão. Quanto ao link mencionado, o objetivo é trocar a senha padrão - o que também é conveniente. Abraços
-
Este questionamento já foi sanado via MSN, mas como pode ser útil a alguém, vou colocar aqui só para constar. Existem duas possibilidades: 1) trazer todos os campos numa querie só (usando join's) - a mais simples e versátil; 2) trazendo os campos principais numa query e os outros (lookup's) em queries auxiliáres. Vou mostrar a 2ª opção (apenas um exemplo simples). Para isso, teremos o relatório ligado ao dataset QryBancos. As queries auxiliáres buscarão, para cada linha em cheques, apenas o dado associado. Para isto definiremos na cláusula where, destas queries, um parâmetro que viabilize este filtro. Normalmente o nome dos campos pode ser o mesmo entre as tabelas relacionadas, mas neste caso, o colega tem nomes diferentes (ID nas lookups e nome, cidade e banco na principal). Assim, sendo, querendo obter o valor dos parâmetros a partir do dataset principal, teremos que definir o nome do parâmetro com aquele existente naquele dataset. Para concluir a configuração, devemos ligar a propriedade DataSource das queries auxiliáres ao datasource que aponta para (está ligado) o dataset principal. na query principal (QryCheques) buscamos os campos necessários: select nome, cidade, banco, numero, valor from Cheques as queries auxiliáres usamos para buscar os campos de lookup: QryNomes = select nome, cpf_cnpj from Nomes where id = :nome QryCidades= select cidade from Cidades where id = :cidade QryBancos = select banco from bancos where id = :banco No relatório, basta ligar os componentes TQRDBText ao dataset de onde provém os dados (do principal ou lookup). Antes de chamar o preview do relatório, as queries devem ser abertas apenas - nenhum parâmetro será passado aqui, eles serão obtidos automaticamente. Abraços
-
é como impressão direta para a impressora - você manda os códigos de controle.Acesse a sessão de downloads da própria Bematech que você vai achar tudo que precisa lá - inclusive exemplos (mais ao fim da página) Vai dando uma olhada neste post
-
Eder, são todos bancos de dados "de gente grande" (como comentou outro dia um colega aqui). Há razoável diferença entre estes bancos e o Paradox. Como é sabido, o FireBird foi desenvolvido a partir da versão 6 do Interbase. Assim, para ter uma idéia da diferença, digamos "fisica" entre eles e o Paradox, sugiro que você dê uma olhada neste artigo que foi mencionado esses dias - Paradox X Interbase. Uma coisa que pode ser levada em conta é que o banco de dados mais utilizado em acesso via internet (ou seja, em hospedagens) é o MySQL. Eu utilizo o FireBird, justamente porque não necessito acessar banco hospedado em um site (ele fica em um servidor na rede local) Do ponto de vista da programação, poucas coisas mudam (mas mudam). Normalmente, são utilizados os componentes da ZeosLib (muito versátil), o que vai precisar de alguma adaptação. Se você trabalha com ClientDataSet, então devem haver poucas diferenças. Para adiantar, alguns post que podem ser lidos para auxiliar numa decisão: DBExpress - Utilizar SQLDataSet e ClientDataSet (firebase.br) mysql e delphi - DBExpress (DevMedia - ver post dia: Sex Nov 07, 2003 3:33) Como acessar uma base de dados mysql - DBExpress (ActiveDelphi) Delphi, Zeos e MySQL (iMaster) Delphi Com Mysql, Componentes que podem ser utilizados (WebMasters) Se optar pelo Firebird e precisar migrar: Migrar Paradox Para Firebird, Migrar Paradox para Firebird Apostilas aqui no forum: MySQL PostGree Interbase/Firebird Espero ter ajudado a dar um partida. No mais, é aguar o pessoal postar e sair procurando na net... Abraços
-
Se precisar de um componente para criptografia, Free e simples de usar: TurboPower LockBox (gostei dele)
-
Livio, eu não sei onde encontrar a tal ferramenta. A única coisa que sei é que ela está associada ao INTERBASE, não ao MSACCESS.
-
Não tirei nada. Apenas mudei a forma como você obtém ele - estava muito ruim a visualização deste tópico, que continua crescendo. É só você ler este post denovo, que você vai encontrar o seu artigo - inclusive podendo baixar em seu computador. falou?! ;) Abraços
-
Bobagem alguma Você precisa tê-las hospedadas em algum site. Eu utilizo o ImageShack - não necessita registro. Se utilizá-lo, após upload você poderá copiar o "atalho" a ser colado no seu post. Como a tag de imagem utilizada aqui é , então você copia o texto na caixa Hotlink for forums (1).Outra opção é o TheImageHosting. Neste após o upload, devido a tag, você copia o texto da caixa Hotlink a clickable thumbnail onto a message board!. Voce vai conseguir fazer post's deste modo - exemplo Espero ter entendido sua pergunta. Pela sua frequente participação, peço mais uma vez que você se registre. Isso evitaria principalmente que tenhamos que trocar informações deste tipo através dos posts (não é o lugar adequado). Tem como vantagem a possibilidade de contato por MP, alteração/exclusão de um post enviado (desde que ainda não respondido) entre outras que usando você percebe. ;)
-
Jonas, como você não é registrado não tenho como lhe consultar por MP. Assim sendo, com relação ao post #10 (artigo Paradox X Intebase): - por uma questão de organização (mais visual); - pelo fato de o artigo não ser de sua autoria; - pelo fato de o artigo estar disponível para download no forum, na sessão de apostilas; tomei a liberdade de editar seu post incluindo alí o link para o artigo existente na sessão de apostilas do forum. Como você não mencionou a origem, apenas o suposto autor, não coloquei o link para o mesmo. Entretanto, no artigo para download, observei que a referência para o artigo original seria: Adaptação livre do artigo “InterBase vs. Paradox” Delphi Informant Magazine - volume 2, número 6, Junho de 1996, Pag. 28-35 grato pela compreensão, Abraços p.s. Se possível e de sua vontade, registre-se.
-
Exportar dados de um DBGrid para o Excel
pergunta respondeu ao Alessandro de Micheus em Delphi, Kylix
Supondo que este campo seja do tipo TDate/TDateTime, você não experimentou apenas utilizar a formatação, tipo:planilha.cells[linha + 2,coluna] := FormatDateTime('mm/dd/yyyy', valorcampo); -
Eder, a menos que a regra de 12:00 mude, dá para você fazer a seguinte conta: 12:00 +09:00 = 21:00 - certo, então se o cara chegar após as 12:00, você diminui este valor da hora de chegada procedure TForm1.Button1Click(Sender: TObject); var HrTotal : TdateTime; begin HrTotal := StrToTime(Maskedit1.Text); If Hrtotal >= StrToTime('12:00:00') then // calcula se hora for 12:00 ou mais Maskedit2.Text := TimeToStr(StrToTime(21:00:00) -Hrtotal); end; Abraços
-
É que como você utiliza o datamodule para colocar seu table, no form não existe a declaração, na cláusula uses, da unit DB. Faça isso - acrescente DB na cláusula uses do seu form. a intençao é encontrar uma palavra dentro do memo(no inicio, meio, fim) Micheus, existe uma forma que você tem certeza que dar certo? outro tipo de banco? (sem ser o paradox, porque esse é o unico que tenho noçao, se for o caso vou tentar aprender outro) essa resposta vai me tomar mais tempo. Faça os testes para confirmar ou não o que mencionei. Quem sabe, alguém tenha uma alternativa. (logo mais eu volto a esta questão) Mas para adiantar: este memo você guarda a lista dos nomes dos arquivos certo? Não poderiam ser itens? você teria um arquivo de CD's e outro de nome de arquivos, relacionados por um campo código do CD.
-
Apenas complementado a sugestão do Pirambú!. Quando utilizar Locate, é possível que seja conveniente utilizar as opções de localização: - loCaseInsensitive; (não diferenciação de maiúscula/minúscula) - loPartialKey. (procura por palavra parcial - tipo substring) Tabela1.Locate('NomeCampo', x, [loCaseInsensitive]) Mas, dependendo de como você queira fazer esta pesquisa, pode não lhe atender: 1) se você não utilizar loPartialKey, terá que digitar o texto exato ao cadastrado para que localize o mesmo; 2) se você utilizar loPartialKey, a pesquisa encontrará apenas o campo em que seu conteúdo inicia com o texto digitado, ou seja, não acha o texto quando ele aparece no meio. Para estas situações, acredito que você teria que utilizar um componente TQuery com um SQL contendo LIKE. Mas, ainda pode haver outro problema. Eu não tenho certeza, mas localizar um substring dentro de um campo Memo no Paradox, pode ser um pouco incerto. Se não me engano, não dá para utilizar a função UPPER ou LOWER com o campo memo no SELECT de modo a tornar a consulta Case-Insensitive. Tem que dar uma verificada. Abraços
-
[resolvido] Como Fazer Um Botão "procurar" Ou "abrir&qu
uma questão respondeu Micheus em Delphi, Kylix
felipe, qual a finalidade de utilizar o InputBox? Por que não utilizar apenas a caixa de diálogo OpenDialog? // *** estas propriedades você pode definir em design-time OpenDialog1.Title := 'Arquivo a importar do SIGE'; OpenDialog1.Filter := 'Text files (*.txt)|*.txt|All files (*.*)|*.*'; OpenDialog1.FilterIndex := 2; OpenDialog1.InitialDir := 'c:\gerar brd\lista'; //********** if OpenDialog1.Execute then // significa que foi selecionado um arquivo begin AssignFile(Input, OpenDialog1.FileName); Reset(Input); ... CloseFile(Input); end; -
Jonas, apenas uma correção para que se utilize os termos adequados e evite confusões futuras.Os SubItens lembram um vetor (array), é unidimensional. Matrizes tem mais que uma dimensão. Abraços
-
Jonas, a explicação tá boa, só que para a pergunta errada. :blink: O Lívio disse que criou um banco Access - não Intebase. A questão da senha a que ele se refere é na ferramenta que acompanha o pacote do Delphi, chamada SQL Explorer - procure por ela no menu Iniciar->Programas->Borland Delphi 7 que ve encontrará ela. É uma ferramenta melhor que o DataBase Desktop (que também acompanha o delphi) e que também permite a criação dos ALIAS para uso com os componentes da Paleta BDE ou DB Express - não os da INTERBASE. Abraços
-
a título de informação, segue dica que encontrei (ref. ForumWEB), há algum tempo, para modificar a senha padrão: Pelo prompt vá para o caminho onde instalou o Firebird 1.5. O padrão é C:\Arquivos de programas\Firebird\Firebird_1_5\bin: No caso o usuário será SYSDBA e a senha é masterkey Execute o gsec.exe para alterar as configurarações. Para acessá-lo você deverá digitar no prompt: C:\Arquivos de programas\Firebird\Firebird_1_5\bin> gsec -user SYSDBA -password masterkey Para alterar a senha do SYDBA faça: GSEC> modify SYSDBA -pw <new password> Para criar outro usuário faça: GSEC> add <usuário> -pw <password> Para sair GSEC> quit Abraços
-
eu vejo isto logo mais. Neste caso, converte a imagem selecionada e salva no banco sempre um JPG.Há uma tempilho eu coloquei uma função que faz isto --> post Ao invés de gravar no disco, como no exemplo, você gravará no blob (como você já deve estar fazendo), mas sempre um JPG. Daí não tem erro na hora de usar, você sabe que sempre tem um JPG no banco, além de que o espaço ocupado também será menor. Veja se consegue adaptar a sua necessidade.
-
felipe, vai aqui uma dica para você também:Quando utilizar componentes data-aware não use a propriedade Text como exemplificado. Duas razões: 1) acaba tendo que fazer uso de funções auxiliares; 2) se estivermos falando de valores formatados como "2.530,50", a função de conversão vai falhar. você teria que antes transformá-la em "2530.50". Então, dê preferência em utilizar os campos do CDS direto, como no exemplo: if CDSContasDebitoifl.IsNull then // equivale a testar " text='' " (na maioria das vezes) CDSContasSaldoifl.Value := CDSContasSaldoifl.Value -CDSContasDebitoifl.Value; ou usando o tipo retornado forçado (.AsInteger, .AsFloat,...) porque se a variável tiver nula ele será convertido para o valor correspondente (neste caso zero): CDSContasSaldoifl.AsFloat := CDSContasSaldoifl.AsFloat -CDSContasDebitoifl.AsFloat; Abraços
-
Independente do uso da função, sempre que você fizer isto (alterar o conteúdo de um edit, dentro do evento OnChange) vai com certeza ter erro - voce estará provocando uma recursão infinita. Captou?! Quando precisar fazer algo assim, desative o evento antes de mudar o conteúdo do texto. Mas sempre que possível, dê preferência a fazer este tipo de coisa no evento OnExit. ;) Para desativar:TForm1.Edit1Change(Sender: TObject); begin edit1.OnChange := nil; // remove tratador do evento edit1.text := FirstCharUpper(edit1.text); edit1.OnChange := Edit1Change; // recoloca end; Abraços
-
Voce não pode ter imagens de tipos diferentes armazenadas, e depois querer carregar ele como se fossem apenas BMP - não dá. O ideal é que sejam sempre gravadas com o mesmo tipo. Bom, há meios de contornar. Voce lê a imagem do campo blob (se ele não for nulo) para um Tmemorystream, verifica os bytes iniciais (parte do header dos arquivos de imagem) para identificar o tipo de imagem que está lá. Veja ref. para: BMP: http://www.fastgraph.com/help/bmp_header_format.html JPG: http://www.fastgraph.com/help/jpeg_header_format.html Observe que os dois primeiros bytes (ou o primeiro word) identificam o tipo do arquivo. Conforme a citação você deverá carregá-lo utilizando um TBitmap ou TJPGImage Veja se isto vai funcionar, eu não testei: function CarregaDBImagem(Campo :TBlobField; var Image :TGraphic) :boolean; const BMP = word($4D42); JPG = word($FFD8); var ImgSignature :Word; Stream :TMemoryStream; begin Result := False; if not Campo.IsNull then begin if Assigned(Image) then // só para o caso de algum esquecimento. ;-) FreeAndNil(Image); Stream := TMemoryStream.Create; try Campo.SaveToStream(Stream); Stream.Read(ImgSignature, 2); // lê 2 bytes if ImgSignature = JPG then Image := TJPEGImage.Create else if ImgSignature = BMP then Image := TBitmap.Create else Exit; try Image.LoadFromStream(Stream); // carrega imagem Result := True; // apenas se não houver erro except Image.Free; end finally Stream.Free; end; end; end; para usar:procedure TFRCadRim.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var Img :TGraphic; begin If Column.Field = DMdados.TBCadRimFoto then Begin If not (gdSelected in State) then DBGrid1.Canvas.FillRect(Rect); if CarregaDBImagem(DMdados.TBCadRimFoto, Img) then begin DBGrid1.Canvas.StretchDraw(Rect, Img); Img.Free; // libera objeto alocado na função end; end; Espero que funcione. :unsure:
-
Outra forma, utilizando operação com conjuntos (que é do que se trata VisibleButtons): IF FORM5.USUARIO.CAPTION = 'CARLOS' THEN DBNavigator1.VisibleButtons := DBNavigator1.VisibleButtons + [nbDelete] // inclui delete no conjunto else DBNavigator1.VisibleButtons := DBNavigator1.VisibleButtons - [nbDelete]; // remove delete do conjunto
-
não tem não. Se quizer uma que avalie a existência de palavras como "de", "da, evitando algo como: Francisco Da Silva De Moraes então veja este post
-
você deve fazer o processo oposto ao que usou para gravar no banco.Normalmente é utilizado stream: dá uma pesquisada aqui no forum por loadfrostream ou memorystream que já vai aparecer algo
-
Este procedimento tem que funcionar. este procedimento só funciona se o form estiver criado anteriormente (normalmente já em design-time, menu Project->Options Auto-create forms) você deve estar fazendo algo errado. Sabe utilizar break-point? a - Se souber bota um na linha onde tem o showmodal, de qualquer uma das opções e verifica o conteúdo da variável do form; b - Se não souber, faz um if com o abaixo para ver se a variável está alocada: if form2 = nil then showmessage('variavel do form é nula') else form2.showmodal; Ainda que a variável esteja ok, você pode estar fazendo algo errado no OnCreate ou OnShow do referido form, podendo gerar o erro. Voce tem algum código nestes eventos?