Ir para conteúdo
Fórum Script Brasil

Micheus

Veteranos
  • Total de itens

    3.189
  • Registro em

  • Última visita

Tudo que Micheus postou

  1. João Paulo Taraciuk, desculpe ter deixado meio de lado seu tópico, mas é porque perdi ele de vista mesmo. :blush: Na minha visualização só vejo os posts do dia, e como não acessei no dia em que você postou... Eu havia inicialmente entendido que no 2º DBGrid seriam mostradas apenas as parcelas do pedido selecionado no 1º DBGrid, e mais nada. Agora vejo que você mostra todas as parcelas existentes e apenas que destacar aquelas referentes ao pedido selecionado. Que bom que a sugestão do Denis Courcy lhe ajudou. Esta questão, de o registro ficar "escondido", não é bem um problema, já que no seu DBGrid você tem, a meu ver, mais informações do que deveria. Mas você poderia contornar isto utilizando o locate no dataset deste 2º DBGrid, assim, você forçaria o reposicionamento das linhas no grid para que aquelas parcelas que não estão "visíveis" possam receber o foco e aparecerem. Entretanto, você pode ainda não obter um resultado bom. É testar para ver. Abraços
  2. Como você está carregando o arquivo a ser concatenado?
  3. Greed, experimente usar a propriedade Lines:RichEdit1.Lines.Add(<linhas do aquivo 2>) RichEdit1.Lines.Add(<linhas do aquivo 3>) ... Seria por ai...
  4. que tal você postar o código dos eventos que você está utilizando para tratar o treeview, daí a gente tenta ver o que falta.
  5. Tá meio difícil.Que tal você dizer onde este código está ou postar a parte do código onde há o envio e a parte do código onde há o recebimento?
  6. Não deveria, já que sendo obrigatórios, eles teriam algum valor. que tipo de problemas?
  7. o colega aplicou com louvor a "Lição 4 - EMOTICONS POR TODA PARTE". rsrsrsrs Olha que tenho me esforçado, mas não consigo escrever estas palavras cheias de u, s, h,.... Acho que nunca serei aceito no grupo. :( Realmente muito bom o texto.Na sessão Delphi tem também um link pendurado que tenta auxiliar estes coitados na difícil tarefa de postar bem: Como Fazer Perguntas Inteligentes
  8. E porque eles são do bem, é que não se manifestam sobre a questão, porque senão, teriam muitos sites pichados em protesto. Acho que é ai que está o problema: não deve ser uma mente sã! Fiquei mais preocupado com o outro link na mesma página: Piratas virtuais podem parar coração a distância, alerta estudo Só falta agora tentarem matar pessoas "remotamente". :o Abraços
  9. maxm.ro, veja se esta dica do site Ramos da Informática lhe ajuda.
  10. José Luiz, um componente interessante era o BarCode. Há um para o Form e outro para o QuickReport, mas ele não é mais free. Talvez a abordagem mais interessante seja mesmo o uso de fontes para código de barras. Neste link (ref. Grand Zebu) tem toda uma explicação sobre o código que você citou. Lá pelo meio da pagina, tem um botão onde você pode baixar o font ean13.ttf (Code EAN13) e logo abaixo há um código VB, seguido versões em outras linguagens (Delphi é uma delas), de uma função para converter o nº informado em uma string para ser utilizada com a font. É uma opção interessante porque fica independente de qualquer gerador de relatórios e versão do compilador. Se usá-la você teria a opção de instalar o fonte via Painel de Controle ou através de seu programa. Neste caso, voce poderia incluir a fonte no diretório de seu fonte ou mesmo ao arquivo de recursos e extraí-la para o uso; Depois para instalar poderia fazer uso do que está neste post. Abraços
  11. Tatiane.InterArt, baixe este exemplo, descompacte em uma pasta qualquer e teste aí. Eu criei a tabela PagtoContaPG no Firebird (que é o que tenho), populei com os dados iniciais que você passou, utilizei os componentes IB e a consulta do seu post#8... e o resultado foi... exatamente o esperado. Tudo certo. Abraços Project_Tatiane.zip
  12. É basicamente o que eu disse que tenho, apenas você utilizou TPageControl e eu TNoteBook; usou treeview muiti-niveis e eu um único nível! não é o caso de dasabilitar todos e habilitar apenas a opção desejada? não seria o caso de desabilitar tudo e habilitar apenas a opção desada? Então, como dissemos antes, não existe a opção "Enabled = False" para os itens do TTreeview. Então, se você acho complicado o que eu postei, não tem como ser mais simples. Tudo que você precisa para fazer este menu está nas anotações que coloquei. Algum detalhe pode ser adaptado, mas tudo o que postei você vai precisar. Talvez se você implementar ele você veja o resultado e então tente adaptar a sua necessidade. isto não é relevante. Abraços
  13. Micheus

    Sql no delphi

    Oi, 'Renatosky'! Em vez de for por que não usar repeat until ou while. Não seriam mais práticos? Realmente Denis Courcy, seria a opção mais adequada. Renatosky, seguindo a sugestão do colega, seu código ficaria mais ou menos assim: // seu código para montar o SQL estaria aqui (seu post inicial) ... SALDO1.Open; while not SALDO1.OEF do begin // seu processamento vai aqui .... SALDO1.Next; end; SALDO1.Close; ... end; Abraços
  14. Como não adiantou? Ocorreu algum erro? Pelo que apurei, a função já existia mesmo na versão 1.5. Veja neste artigo: Construa selects mais inteligentes com o Firebird 1.5 (procure pela palavra COALESCE). o uso da função é equivalente - é só procurar no que há de documentação (agora eu não tenho a ref. para lhe passar). Aparentemente não vejo erro na consulta. Vou dar uma olhada no que tenho em casa e posto alguma coisa depois (caso mais ninguém se manifeste). Abraços
  15. Notax, esta exportação pode ser feita por um programa de terceiro, ou você tem que implementar algum programa para isto? Acho mais interessante que você utilize apenas um deles. E como o arquivo é GDB, o mais indicado seria mesmo o Interbase. Supondo que possa ser feito por software de terceiro, uma opção interessante seria utilizar o IBExpert. Para fazer o downloada da versão free, acesse o link http://ibexpert.biz/ibe/index.php?n=Main.DownloadFree e utilize o link IBExpert Download Center E já que você mencionou por MP sobre exportar até mesmo para o Access, acho que você poderia fazer isto de modo simples se instalar (caso não o tenha) um driver ODBC. Daí, basta abrir o MSAccess, criar um novo banco de dados e utilizar a opção "Arquivo"->"Obter Dados Externos"->"Importar...". Na caixa que aparece, selecione em "Arquivos do tipo" a opção "ODBC Database". A caixa de diálogo será fechada e a caixa "Selecionar Fontes de Dados" será apresentada. Selecione a guia "Fonte de dados de máquina". Acione o botão "Nova...", clique em "Avançar", selecione o driver Interbase/Firebird que aparece na lista, clique em "Avançar" e depois "Concluir". Na nova caixa que apareceu, dê uma nome para a fonte de dados em "DSN", em Database selecione o arquivo GDB, em Database account informe SYSDBA e em Passoword a senha (normalmente "masterkey"). Clique em "Test connection" para conferir que está tudo ok. Se estiver é só clicar OK para continuar. Agora já deve existir a fonte de dados para ser selecionada e após selecioná-la e clicar em OK, aparece a lista das tabelas no banco. É só selecionar todas e clicar em OK e torcer para que não haja algum tipo de incompatibilidade. ;) Abraços
  16. etspaz, este número deve ser 65535, que é o maior valor para um inteiro sem sinal (o tipo Word: 0..65535) você não poderia criar outras planilhas (Worksheet) na mesma pasta (Workbook)? Seria uma solução simples. Assim, você poderia limitar cada planilha a no máximo 65K linhas e criar uma nova planilha para o restando das informações - talvez funcione. também acho que não, porque os componentes da paleta Servers do Delphi fazem apenas uso do recurso que já está instalado em sua máquina via OLE (se não me engano). Abraços
  17. Apenas para auxiliar na compreensão... PAS, o motivo de você não conseguir compilar deve-se ao fato de o parâmetro passado a função Ord deve ser um caracter e, ao passar Edit1.Text, você está tentando passar uma string (seqüência de caracteres). A forma como Jhonas lhe sugeriu, faz justamente isto, utiliza o caracter pressionado (apenas um caracter).
  18. Micheus

    Sql no delphi

    Renatosky, qual seria o objetivo do DISTINCT? O fato de utilizar o GROUP BY, já vai lhe gerar resultados distintos para cada linha.
  19. t4t5u, se a questão for não utilizar um form, acho que não seria problema. Voce poderia utilizar os componentes, que o Jhonas mencionou, em run-time, sem associá-lo a um form. Não tenho 100% de certeza, mas acho que funcionaria em um App Console. Supondo que desse certo, o uso de componentes nos trás muitas facilidades. Há a possibilidade do uso da API client, mas você precisaria dos head's traduzidos do C++. "Existe" uma unit chamada MySQL.pas que não está mais disponível em lugar algum - tem um tempo que eu havia procurado por ela, por ter visto sua referência em um artigo. Sabendo disto, dei uma pesquisada para ver se lhe achava alguma referência, e encontrei este tutorial (libmysql.dll através do mysql.pas no Delphi / MySQL 5) e como você vê, pode ser dependente da versão do DB que você estiver utilizando. Nele, o autor ainda faz uso de forms, mas isto você pode ignorar - o que interessa é o uso das funções da API que ele explica como utilizar. Agora é só você achar a tal unit MySQL.pas. Quem sabe, você entra em contato com o autor e ele lhe fornece? Voce poderia ainda dar uma olhada em um componente no SourgeForce que diz fazer acesso nativo sem uso de dll's: DirectSQL (apareceu na consulta - não conheço) Boa sorte!
  20. Jhonas, estão boas as alterações, mas pela MP que recebi do nosso colega, parece que ele está cada vez mas perdido com o que se propõe. Baseada na MP, vou propor que se volte ao post inicial do colega, alterando naquele código o que ele precisa e que parece mais claro agora: António44, vamos as alterações e leia os comentários que coloquei no meio do código: procedure TForm1.Button2Click(Sender: TObject); var FileName :string; // variável para manter o nome do arquivo de backup begin // inicializamos a variável com o diretório destino informado no TEdit - Dir FileName := Trim(Dir.Text); // verificamos se foi digitada a barra no final do diretório. // se não foi concatenamos ela if Copy(FileName, Length(FileName), 1) <> '\' then FileName := FileName +'\'; // concatenamos o nome do arquivo no formato: "Backup" + <data do backup> +".bkp" FileName := FileName + 'Backup'+DateToStr(Date) +'.bkp'; // daqui para baixo, só retiramos o SaveDialog, não há mais o que mudar // porque utilizamos uma variável com o mesmo nome que o da propriedade // FileName do SaveDialog que era utilizada. Assim, se funcionava antes, tem que // funcionar agora e com o diretório digitado no edit. if Filelistbox.items.count = 0 then Showmessage('No files added') else begin if uppercase(copy(filename, 1, 1)) = 'A' then begin Showmessage('Drive A indicates a floppy drive - please a new empty disk'); BackupFile1.maxSize := 1400000; //backup to floppy end else BackupFile1.maxSize := 0; backupfile1.backuptitle := EdBackupTitle.text; backupfile1.backupmode := TBackupMode(rgBackupmode.itemindex); backupfile1.compressionLevel := TCompressionLevel(rgCompressionLevel.itemindex); backupfile1.SaveFileID := CbSaveFileID.checked; if backupfile1.backup(filelistbox.items, filename) then Showmessage('Backup sucessful. Compression rate = '+inttostr(BackupFile1.compressionrate)+' %') else Showmessage('Backup failed or aborted'); end; end; Espero que isto resolva a questão. Abraços
  21. claudyo, primeiramente, ignore esta minha observação. Ela não cabe para os componentes ADO. :blush: A esta: "me retorna o erro 'valor de preciaso invalido'".Mas como uso o Access raramente, não me lembrei que há possibilidade de mensagens em português. :blush: Bom, depois de duas "bolas fora", vamos ver se dou uma dentro. :D Revirei meus demos com Access e fazendo uns testes com o Access 2000 (que tenho disponível), testei três possibilidades em que pensei, mas em nenhuma delas a mensagem foi a mesma que a sua. Em todos os casos, eu pensei em três situações:- o número digitado possuir formatação; - o número digitado estourar a quantidade de dígitos para o tipo utilizado; - a atribuição de '' para o campo numérico estar gerando este erro. No caso das formatações, elas realmente não poderiam ser utilizadas na gravação, já que seu campo é numérico. Quanto ao estouro do máximo de dígitos, considerando a gravação do código de área junto, seria necessário definir o tipo de dados como sendo Simples ou Double. Já quanto a última opção, neste seu caso (um campo não texto), experimente testar se o campo (Edit) não está vazio antes de atribuir ao parâmetro. Caso esteja, não atribua o valor de da propriedade Text que é '', mas sim NULL. Ou seja, se não há valor a atribuir, passe null na cláusula VALUES do seu INSERT. É o procedimento padrão para a instrução, quando você informa o nome do campo mas não informa um valor. Seria assim: if Trim(edtTel.text) = '' then dm.qryclientes.Parameters.Parambyname('PTel').Value:=Null else dm.qryclientes.Parameters.Parambyname('PTel').Value:=edtTel.text; o Null é declarado na unit Variants. Teste deste modo e caso resolva seu problema, eu sugiro que você crie uma procedure genérica para isto: procedure InitParam(Param :TParameter; Value :Variant); begin if Trim(Value) = '' then Param.Value := Null else Param.Value := Value; end; ela pode ser colocada em uma unit de utilidades para ser utilizada em outras telas que você precisar. No seu código, faria a alteração que segue e eu já vou utilizar o WITH ... DO para minimizar a escrita: procedure Tfrmcadastro.gravadados; begin with dm.qryClientes do begin sql.text:= 'Insert into WorldPizza (Nome, Endereco, bairro, tel, telopt)'+ ' Values (:PNome, :PEndereco,:Pbairro, :PTel, :PTelopt)'; InitParam(Parameters.parambyname('PNome'), edtNome.text); InitParam(Parameters.Parambyname('PEndereco'), edtEnd.text); InitParam(Parameters.Parambyname('PBairro'), edtBairro.text); InitParam(Parameters.Parambyname('PTel'), edtTel.text); InitParam(Parameters.Parambyname('PTelopt'), edtTelopt.text); Prepared:= True; ExecSQL; end; end; Abraços
  22. Renato Vaz, provavelmente o procedimento seja parecido.Se são três registros (significam três linhas no banco), você precisará de um laço (o critério você deve saber), e sendo para substituir em uma variável do Word, então você terá que concatená-los em uma variável local e depois substituí-la na variável do Word da forma como eu exemplifiquei. Se estes seus três registros, na verdade forem três campos (significam três colunas), então não há laço a fazer - apenas concatenação. Fique atento aos termos que usa. ;) Abraços
  23. Renato Vaz, neste contexto, você pode dar uma olhada neste post. Em termos de uso de OLE, é possível sim, desde que haja uma instalação do do Word na máquina que dele fizer uso - já usei isto há um tempo atrás. Vou deixar um exemplo, onde no documento do Word eu tenho dois campos de formulário, adicionados a partir da barra de ferramentas Formulários, com as seguintes configurações:vNome - Tipo: Texto normal e Formato do texto: Iniciais maiúsculas; vDatNasc - Tipo: Data e Formato da data: dd/MM/yyyy Eu parti do princípio de que será lido um documento modelo e gravado em outro arquivo. Se não for o caso, basta usar Save apenas. procedure TForm1.Button1Click(Sender: TObject); var WordApp :OleVariant; procedure SetValue(FieldName, FieldValue :string); begin if WordApp.ActiveDocument.Bookmarks.Exists(FieldName) then WordApp.ActiveDocument.FormFields.Item(FieldName).Result := FieldValue; end; begin WordApp := CreateoleObject('Word.Application'); WordApp.Documents.Open('c:\temp\TesteVariaveis.doc'); SetValue('vNome', 'micheus'); SetValue('vDatNasc', '26/08/1967'); WordApp.ActiveDocument.SaveAs('c:\temp\TesteVariaveis2.doc'); WordApp.Quit; end; Abraços
  24. claudyo, seria mais conveniente que você postasse a mensagem original.Haveria nesta tabela, algum campo numérico cujo valor devesse ser informado? Por acaso, os numeros de telefones são campos numéricos? Uma observação, no lugar de manipular a propriedade Prepared: dm.qryclientes.Prepared:= True; você deveria chamar o método Prepare: dm.qryclientes.Prepare;
×
×
  • Criar Novo...