Ir para conteúdo
Fórum Script Brasil

Micheus

Veteranos
  • Total de itens

    3.189
  • Registro em

  • Última visita

Tudo que Micheus postou

  1. Decode Function (ref. Tech on the Net)
  2. Gafanhoto, você está não está usando o meio mais apropriado, porque ele depende de um click para funcionar. Se você quer que a cada movimentação no seu dataset ligado ao DBGrid (quando você move a linha selecionada no DBGrid, você está mudando a seleção corrente no dataset), então você deve usar o componente TDataSource que está conectando o TDBGrid ao TDataset e o evento a ser utilizado é OnDataChange. Como você trabalha com datamodule, você terá que adicionar um componente TDataSource no seu Form2 e ligar a propriedade Dataset ao dataset usado no seu DBGrid (ADOQuery1). Depois, você implementa o evento OnDataChange assim: procedure TForm2.DSPerfilDataChange(Sender: TObject; Field: TField); begin link.Text := DataModule2.ADOQuery1.FieldValues['titulo']; end; Abraços
  3. Micheus

    Fixar Janela

    Jhonas, quando ele fala "estático", acho que o que ele quer é que o calendário seja desenhado no desktop, como se ele fosse uma janela filha dele. Ou seja, quando ele mostrar o desktop, o calendário é mostrado junto. Não passou nenhum código deste tipo pela minha frente, mas deve ser possível. A questão é tempo para tentar achar uma solução. Abraços
  4. Jhonas, a dica o OnNeedData é uma opção, mas na condição que o João Paulo Taraciuk colocou (até 6 itens...), talvez fique mais simples para ele usar um TQRCompositeReport. (eu acho que funcionará) João, caso você desenhe seu relatório nesta condição em que, havendo apenas 6 itens, sejam possíveis a impressão de dois documentos em uma página, sugiro que você faça um teste com a seguinte dica: - Você adiciona no form do seu reletório o TQRCompositeReport; - Então, no evento OnAddReports, você adiciona os dois relatórios. No evento OnAddReports você faz a inclusão do QuickRep, conforme a situação - no mínimo 1 vez: procedure TFormReport.QRCompositeReport1AddReports(Sender: TObject); begin QRCompositeReport1.Reports.Add(QuickRep1); // principal // você verifica se haverá até 6 itens, e se for o caso, adiciona o relatório mais uma vez if dataset_items.RecordCount <= 6 then QRCompositeReport1.Reports.Add(QuickRep1); // cópia end; Na hora de mostrar o relatório, você usa o QRCompositeReport e não o QuickRep, como é o normal: ... // consultas (datasets) abertos... QRCompositeReport1.Prepare; QRCompositeReport1.Preview; ... É testar para ver se funciona de acordo com o esperado. Abraços
  5. ucastro, dê uma olhada deste post em diante e veja se algo lhe ajuda. Não creio que não seja possível adicionar, apenas porque é a versão trial. Até porque, o QuickReport acompanha a versão 7 do Delphi.
  6. t4t5u, Code Gear é o "braço" da Borland que se dedica as ferramentas de desenvolvimento da empresa. Por acaso, você estaria querendo instalar componentes no Turbo Delphi 2006 Explorer? (a versão free do "delphi") Se for, não tem como instalar componentes de terceiros nele - é a limitação que possui (é só ler o quado no link que passei). E, neste caso, o que você pode fazer é acrescentar a unit na cláusula uses e instanciar o objeto em tempo de execução (foi o que li por aí). Abraços
  7. Esse navigator seria o componente TDBNavigator?Se for, ele não tem nenhum evento que ocorra especificamente quando houve sucesso na gravação. Mas, considerando: - que o botão nbPost estará habilitado quando você estiver alterando ou incluindo uma nova informação; - que o evento OnClick é chamado após a execução da ação (segundo o help); - que após gravado com sucesso o status do dataset não será mais dsEdit ou dsInsert (o datasource ligado ao dataset também tem esta propriedade). acho que você poderia usar este evento para isto - é implementar e testar. Seria algo assim, no evento OnClick do TDBNavigator: procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn); begin if (Button = nbPost) then if not (DBNavigator1.DataSource.State in [dsInsert, dsEdit]) then MessageDlg('Cadastro efetuado com sucesso!', mtInformation, [mbOK], 0); end; Ficam estas dicas: - procure conhecer os métodos e eventos dos componentes que você utiliza (o help - F1, ajuda muito mesmo) - informe o banco que utiliza, como faz a conexão a ele e os componentes de acesso(Zeos, BDE, dbExpress, ADO, Intebase, MDO,...) Abraços
  8. Polyanna Wenze, talvez você possa pegar uma carona nestes tópicos: Como desenho tabelas estilo word em delphi? Como eu faria isso?, adicionando conteudo de .doc no delphi Justificando o texto no TwebBrowser
  9. Provavelmente você não setou a propriedade BatabaseName (path ou alias) ou, se configurou, este alias não está apontando para o local onde você colocou sua tabela. É conveniente tem algum material em mãos, sobre o assunto, enquanto está iniciando.
  10. Ok K!ko, vamos gastar algum tempinho aqui... isso ocorre porque, ao chamar preview a execução no seu form é interrompida, ou seja, não são executadas estas linhas: ... frmrlos1.QrOs.close; frmrlos1.Free e assim, seu preview fica na memória. Ele não é modal, logo é possível o usuário clicar de novo no botão para gerar o mesmo. Contudo, a sua variável frmrlos1 não estará igual a nil porque há uma instância alocada ainda, mas mesmo que não houvesse mais, ocorre que você não inicializa a variável após a sua liberação e ela continua com um valor que agora é lixo, mas impede que o teste funcione. Bom, vamos ajustar seu código para funcionar mais corretamente e incluir uma opção para restaurar a janela preview minimizada: if frmrlos1 = nil then begin frmrlos1 := tfrmrlos1.Create(self); try {Selects usados para trazer os dados no QR, que esta no form Frmrlos1} frmrlos1.QuickRep1.Preview; frmrlos1.QrOs.close; finally frmrlos1.Release; frmrlos1 := nil; end; end else begin MessageDlg('Este relatório já esta sendo exibido', mtwarning, [mbok],0); with frmrlos1.QuickRep1.QRPrinter.Client do ShowWindow(Parent.Handle, SW_SHOWMAXIMIZED); end; frmrlos1.QuickRep1.QRPrinter.Client equivale a: <nome form>.<nome QuickRep>.QRPrinter.Client seguindo a lógica: acessamos o quickrep que está no seu form; depois acessamos o QRPrinter deste quickrep; depois acessamos o componente QRPreview (Client) que está vinculado ao QRPrinter; e por último acessamos o form QrPrintPreview que é o Parent do QRPreview. Pronto, estamos apontando para a janela de preview e para mostrá-la usamos a função da API ShowWindows com a opção maximizar. Obs: 1) com forms, use Release e não Free; 2) é importante inicializar a variável do form com nil após o release, para não haver erro; 3) é recomendado o uso do try..finally; Abraços
  11. Façamos o seguinte: coloque o nome dos dois datasets envolvidos (ligados aos DBGrids em questão), o nome dos campos, se ficam em datamodule ou em cada form e seus nomes. Daí fica mais fácil dar um exemplo.
  12. Pouco provável e não li nada parecido ainda. O que você falou sobre o uso do ShowPreview é correto, mesmo assim, eu conto com o bom senso do usuário (às minhas recomendações) e continuo usando ele (como sugeriu-lhe o Jhonas). Mas já usei o ShowPreviewModal e não tive problema. Talvez tenha alguma relação com o tamanho do relatório.. Abraços
  13. Como disse antes: você tem que escolher qual banco usar Interbase ou Firebird! Se for para uso em uma rede de computadores, você deverá instalar o servidor do banco de dados e a máquina será provavelmente o servidor. Daí, nos outros computadores você precisará apenas distribuir o client (a biblioteca FBClient.DLL ou a GDS32.DLL, as quais já falei antes) Se o programa rodar em um único computador (como no seu, por exemplo - isolado), então é neste você pode instalar o servidor ou ainda criar uma aplicação "embarcada". Veja este artigo Criando uma aplicação "embarcada" com Firebird (ref. Gladiston Santana) Abraços
  14. Lembro que seria apropriado o uso do client compatível com a versão do banco sendo acessado.Pelo que você diz, você tem a versão client 1.5.4 e acessa um servidor 2.0. Aqui fica uma dúvida. Se são campos blob, porque mudar o tamanho de 10K (que já é grande) para 32K? Lembre-se que para este tipo de campo, o SIZE refere-se a quantidade de bytes (bloco) que será alocado a cada vez que o tamanho atual não comportar as informações, ou seja, a quantidade a mais a ser alocada. A questão do C# acessando o banco eu fico lhe devendo. Abraços
  15. Voce vai usar os componentes tipo dataset ligados nestes datasouces - sejam eles tipo table ou query.
  16. a mensagem realmente sugere que seja alguma limitação do banco. Se este erro ocorre quando você tenta fazer estas alterações via IBExpert, então não tem como você ficar em dúvida se tem que fazer algo na aplicação - significa que é com o banco mesmo. Voce só tem o Firebird instalado mesmo, não é? Alguma possibilidade de você migrar para a versão 2.0 (que já está estável) Aqui foge ao meu escopo. :DMas, acho interessante você avaliar a troca de versão (se o fizer, não esqueça do backup). Abraços
  17. neste caso, o campo CodRed não poderia ser auto-increment, ou seja, você deverá controlar seu incremento. Observando o critério que você mencionou - para cada IdGrupoConta. Por exemplo, se fosse um incremento sequencial por IdGrupoConta, você faria um select obtendo o maior valor de CodRed para o IdGrupoConta em questão: SELECT MAX(CodRed) CodRed FROM GrupoContas WHERE IdGrupoConta = 2supondo que o maior valor retornado fosse 53, você somaria 1 e teria o novo valor -> 54 No seu caso, poderíamos dizer que na primeira inclusão você teria 0 como resultado, mas como quer que comece em 2000, então bastaria gerar este valor com IdGrupoConta *1000 (isso resultaria em 2000) que somado ao 1, resultaria no primeiro valor com 2001. Seria algo por ai. Variaria um pouco se você implementar isto no código Delphi ou no banco. acredito que você poderia utilizar uma trigger para isto, ou eventualmente em um procedure que seria chamada do programa.Acho que vai depender de como você está trabalhando com sua aplicação. Nosso colega Denis Courcy, pode ter mais informações a este respeito e, até mesmo, uma melhor sugestão. Estou movendo para a sessão Banco de Dados->MySQL. Abraços
  18. K!ko, qual a versão do QuickReport que você está usando? Já está com a última versão? Esta é a última:QuickReport 3.5.1 Standard for Delphi 5 (é uma atualização para a versão Standard que acompanha o Delphi - só tem que informar um e-mail)
  19. e o driver selecionado deve ser o do Interbase. Então, na tela de login (quando você clica em Entrar na barrinha) tem uma caixa bem destacada, em vermelho, onde tem o texto: "Esqueci minha senha! Clique aqui!" e daí você clica alí. ;) Abraços
  20. Frega, já que é iniciante, já vá começando a saber que o DBGrid apenas mostra os dados de um dataset a ele ligado. Tendo isto em mente, quando você seleciona um item no DBGrid, significa que este item é o correntemente selecionado no dataset que a ele está ligado. Logo, ao dar este duplo click no DBGrid de produtos, você poderá usar esta informação para gerar o novo item para o pedidos. O que você precisa fazer para incluir um novo item no pedido? Não é selecionar um produto e preencher as outras informações do item? Então?! basta que você mova para a referência do produto no item do pedido o código do produto assim que você der o duplo click. Abraços
  21. Então, eu não vejo o menor sentido em usar os dois bancos. Acho que você deveria verificar isto.Talvez, a orientação fosse no sentido de utilizar os componentes Interbase (no delphi) para acessar o banco Firebird. A questão de selecionar no IBExpert o firebird, não implica que você usará este banco. Pelo que parece, você não instalou o servidor do banco Firebird e neste caso você está mesmo usando o servidor Interbase. Digamos que quem vai determinar o banco que você usará no IBExpert é a biblioteca client que você está usando - falando de modo simplificado (ver Client Library File - que já falei sobre ela no outro post). A questão da compatibilidade entre os dois se dá pelo fato de a versão 1 do Firebird ter sido derivada da versão 6 do Interbase (que a Borland havia lançado como Open Source). Na versão seguinte, a Borland voltou a ser proprietária do banco e o pessoal começou a trabalhar no Firebird que, desde então, está seguindo seu próprio caminho. Assim, o Firebird é um banco free (ao menos por enquanto, e acredito que não isto não mude). Perguntas ainda não respondidas: - como foi que você fez o acesso ao banco? Que tipo de componentes está usando para este acesso? - qual o nick que você usou no cadastro? xerell? Se for já está validado. Por acaso você não conseguiu fazer o login?
  22. Jefferson, Na verdade esta seleção que você faz na caixa Server Version é meramente informativo. eu acredito que mude sim. Você não respondeu meus outros questionamentos. :huh:
  23. Marcos Augusto, você precisará criar uma procedure para ser atribuída ao evento OnProgress da classe TCompressionStream. Com isso, a cada parte do processo de compactação que for avançada, este seu procedimento será chamado. Deve ficar mais ou menos assim (não tenho isso implementado): type TForm4 = class(TForm) ... private procedure CompactaArquivo(CaminhoIn, CaminhoOut, NomeFile : String); procedure OnCompressProgress(Sender :TObject); << ============= AQUI { Private declarations } ... procedure TForm4.OnCompressProgress(Sender :TObject); begin ProgressBar1.Position := (Sender as TStream).Position; Application.ProcessMessages; end; procedure TForm4.CompactaArquivo(CaminhoIn, CaminhoOut, NomeFile : String); ... Zip := TCompressionStream.Create(clMax, FileOut); Zip.OnProgress := OnCompressProgress; << ======= AQUI ProgressBar1.Max := FileIni.Size; Zip.CopyFrom(FileIni, FileIni.Size); // ProgressBar1.Position := FileIni.Position; << ======= AQUI - retira/comenta Zip.Free; ... end; Tente e veja se faltou algo. Abraços
  24. provavelmente sim! Observe: - por padrão, o Interbase instala a biblioteca client GDS32.DLL na pasta System32; - a biblioteca client do Firebird é FBClient.DLL; - por padrão, na instalação do Firebird, não é criada a biblioteca de retro-compatibilidade com o IB, que é a FBClient renomeada com GDS32.DLL; - a extensão .gdb é o padrão para o banco Interbase, já para o Firebird é .fdb (mas ele aceita .gdb sem problemas); - ao criar uma conexão no IBExpert, você provavelmente utiliza o client padrão - GDS32.DLL - é o que o IBExpert oferece por default; Logo, o tempo todo você está fazendo uso do Interbase. Qual a razão de ter os dois instalados? como foi que você fez o acesso ao banco? Que tipo de componentes está usando para este acesso? ______________ qual o nick que você usou no cadastro? xerell?Se for já está validado. Por acaso você não conseguiu fazer o login?
  25. etspaz, mas mudando para blob, você também estará fazendo isto. :huh: De qualquer modo, se for "transformá-lo" em blob, você precisará criar um novo campo do tipo blob para isso e posteriormente suprimir o inicial. Se você tiver uma base de teste (ou mesmo uma cópia do banco em questão), você poderia utilizar o IBExpert para gerar o script de alteração. Não cheguei a fazer isto com a versão 1.5 do FB, mas na versão 2.0 (e superior) você faria algo como (isto é um exemplo baseado no bamco EMPLOYEE que acompanha o FB): 1) criar novo campo do tipo blob: ALTER TABLE PROJECT ADD PROJ_NAME_BLOB BLOB SUB_TYPE 1 SEGMENT SIZE 1024 CHARACTER SET WIN1252; 2) inicializar novo campo com conteúdo do que é varchar: UPDATE PROJECT SET PROJ_NAME_BLOB = PROJ_NAME WHERE PROJ_NAME_BLOB IS NULL; 3) eliminando o campo a ser substituido: ALTER TABLE PROJECT DROP PROJ_NAME; 4) alterando o nome do campo blob para o inicialmente utilizado: ALTER TABLE PROJECT ALTER PROJ_NAME_BLOB TO PROJ_NAME; OBS: 1) antes de executar este processo no banco "quente", não esqueça de fazer um backup; 2) ao executar este processo, certifique-se que nenhum acesso esteja sendo realizado ao banco; 3) se sua aplicação for desenvolvida em Delphi e você tiver adicionado aos componentes tipo dataset (onde referenciou esta tabela) este campo, você deverá acessar cada componente e remover e adicionar este campo para que o campo antes TStringField possa ser substituído por um TBlobField (ou algo assim). Isto vale também, para o caso de você optar por apenas mudar o tamanho do seu varchar. Abraços
×
×
  • Criar Novo...