
Micheus
Veteranos-
Total de itens
3.189 -
Registro em
-
Última visita
Tudo que Micheus postou
-
Daniel, o significado do erro é este que o Jhonas já traduziu para você. Voce também já disse (logo sabe) qual o motivo do erro: "quando pego mais do que 2 edit para enviar informações para meu relatorio ele da o seguinte erro" Logo, percebo que você não entendeu o espírito da coisa na dica que você mencionou. Se você for passar mais parâmetros, então deveria declarar na procedure que inicializa o relatório (naquele exemplo, procedure Imprime) os outros parâmetros que ela deve processar - Quantos parâmetros você quiser passar, deverão estar declarados na procedure que irá os receber. Abraços
-
Problema ao tentar executar comandos via Socket
pergunta respondeu ao devil69 de Micheus em Delphi, Kylix
Este evento vai ocorrer apenas quando uma informação for enviada pelo client. Supostamente, se o cliente manda uma string 'ligar', o servidor recebe a string e executa o button1.click. Para executar outro, outra string deverá ser recebida. você deve ver como está enviando as mensagens para o servidor - se ela não chegar não será "processada". Observe se você não está enviando com caracteres maiúsculos ou algo assim, pois você testa apenas com a seqüência minúscula. Também sugiro que você utilize a lógica correta - if .. then .. else - porque não faz sentido receber um único comando e testá-lo para todas as opções. Tão logo seja processado, não há mais o que testar. procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin if socket.receivetext = 'ligar' then button1.Click else if socket.receivetext = 'ver' then button2.click: else if socket.receivetext = 'fechar' then button3.click; end; Abraços -
A forma mais simples, se o dataset ligado ao DBGrid não for do tipo Query (p.e. TQuery), seria colocar o dataset em um datamodule, ligar seu dbgrid a este dataset e na tela de cadastro, ao invés de utilizar TEdits, utilizar TDBEdits, ligando eles ao mesmo dataset que está "conectado" ao dbgrid. Deste modo, os campos da linha selecionada no dbgrid, já estarão prontos para alteração quando a tela de cadastro for apresentada. Mas, se você precisa mesmo utilizar TEdits, então, coloque aqui o código que você está utilizando (tentando) para fazer este processo. Abraços
-
gsguma, sua dúvida não ficou muito clara. Qual o problema/erro que você está tendo? Aparentemente o UPDATE estaria correto. conexao.adq_emissao.sql.add('update tabela set item='''+edit_item.text+''' where codigo='+edit_codigo.text+' ') apenas que se este seu campo item for do tipo inteiro, você não precisa utilizar áspas, ou seja, poderia ficar deste modo: conexao.adq_emissao.sql.add('update tabela set item='+edit_item.text+' where codigo='+edit_codigo.text+' ') Uma observação quanto a sua codificação: setar a propriedade Active = False ou chamar o método Close é exatamente a mesma coisa, logo, use apenas um. E também, não faz muito sentido chamar o método Open como você colocou. Então, pode ser, também, que seu problema não citado esteja relacionado a este Open, dependendo do que esteja colocado na propriedade SQL. A sua consulta de forma mais correta (se eu não estiver errado quanto aos campos) seria: conexao.ado_emissao.Close; conexao.adq_emissao.sql.Clear; conexao.adq_emissao.sql.Add('update tabela set item='+edit_item.text+' where codigo='+edit_codigo.text+' '); conexao.adq_emissao.ExecSQL; Mas já aconselho a ir pensando em usar parametrização, este hábito pode lhe poupar dores de cabeças futuras. Fazendo uso deste recurso, seu código ficaria assim (ex. supondo uso de ADO): conexao.ado_emissao.Close; conexao.adq_emissao.sql.Clear; conexao.adq_emissao.sql.Add('update tabela set item = :Item where codigo = :Codigo '); conexao.adq_emissao.Params.ParamByName('Item').AsInteger := StrToInt(edit_item.text); conexao.adq_emissao.Params.ParamByName('Codigo').AsInteger := StrToInt(edit_codigo.text); conexao.adq_emissao.ExecSQL; Abraços
-
Inserindo uma imagem na coluna de Título do DBGrid - Delphi 5
uma questão respondeu Micheus em Delphi, Kylix
mas, caso não lhe interesse instalar um componente, porque você simplesmente não troca a cor do título da coluna para fazer esta "indicação"? -
(Resolvido) A Cada Clique do Mouse/
pergunta respondeu ao Jhonatas araujo de Micheus em Delphi, Kylix
dá para melhorar um pouquinho mais ;) : procedure TForm1.Button1Click(Sender: TObject); begin if Button1.Caption = 'Conectar' then Button1.Caption := 'Desconectado' else if Button1.Caption = 'Desconectado' then Button1.Caption := 'Conectar'; end; -
charles_1976, mantenha o foco dos seus questionamentos no assunto que diz respeito ao seu tópico (post inicial). Por uma questão de ordem, os posts que tratavam de seu outro tópico foram movidos para lá: Organizar por ordem alfabetica, Organizar por ordem alfabetica Abraços
-
E completando o que o Jhonas disse, possivelmente este erro está ocorrendo quando você tenta executar um Commit/CommitRetained Dedendendo do componente de acesso que você utilize, você tem uma propriedade que pode lhe permite verificar se uma transação está ou não em andamento. em alguns chama-se simplesmente InTransaction, e aproveitando o exemplo do Jhonas: if IBTransaction1.InTransaction then IBTransaction1.CommitRetained Nestes casos, é sempre bom citar o componente em uso. Abraços p.s. Jhonas, só lembrando que os componentes IB.. são da paleta Interbase, utilizados para Interbase e Firebird. Mas a citação da inicialização da transação está correta. ;)
-
você pode tentar as opções que o Jhonas postou, mas antes, só para teste, experimente uma alteração bem simples no seu código atual, já que está funcionando com o ENTER - inclusa o TAB no seu teste: if key in [#9, #13] then begin key:=#0; Perform(Wm_NextDlgCtl,0,0); end; Veja se isto irá funcionar. Abraços
-
Despois disto que você mencionou, observei melhor a mensagem. :blush: Ela avisa sobre a duplicação de recursos e pelo nome dos arquivos citados: File c:\arquivos de programas\borland\delphi7\Lib\QDBCtrls.res resource kept; File c:\arquivos de programas\borland\delphi7\Lib\DBCtrls.res parece que esta instalação do quick que você baixou está conflitando com os recursos de componentes do delphi. Inclusive, estes arquivos: QDBCtrls.res, QDBLogDlg.xfm e QDBLogDlg.xfm, não fazem parte do pacote original do quickreport. :huh: Para não ter dúvida, veja quais os arquivos que estão listados após a instalação neste computador que nem Delphi tinha: Delphi7\bin\dclqrt70.bpl Delphi7\demos\quickrpt\QR2\* Delphi7\demos\quickrpt\QR3\** Delphi7\help\quickrep.hlp Delphi7\lib\dclqrt70.dcp, qr3const.dcu, qrabout.dcu, qrabout.dfm, qrcomped.dcu, qrcomped.dfm, qrctrls.dcu, qrdatawz.dcu, qrdatawz.dfm, qrenved.dcu, qrenved.dfm, qreport.dcu, qrexpbld.dcu, qrexpbld.dfm, qrexport.dcu, qrexpr.dcu, qrexpred.dcu, qrexpred.dfm, qrextra.dcu, qridewz.dcu, qrlabled.dcu, qrlabled.dfm, qrlablwz.dcu, qrlablwz.dfm, qrnew.dcu, qrprev.dcu, qrprev.dfm, qrprgres.dcu, qrprgres.dfm, qrprnsu.dcu, qrprntr.dcu, qrwizard.dcu, qrwizard.dfm, quickrpt.dcu Delphi7\projects\bpl\dclqrt70.bpl, dclqrt70.dcp, qrpt70.bpl, qrpt70.dcp Delphi7\quickrpt\qrabout.dfm, qrcomped.dfm, qrdatasu.dfm, qrdatawz.dfm, qreditor.dfm, qreditor.res, qrenved.dfm, qreport.dcr, qrexpbld.dfm, qrexpred.dfm, qrlabled.dfm, qrlablwz.dfm, qrmdsu.dfm, qrnew.rc, qrnew.res, qrprev.dfm, qrprgres.dfm, qrwizard.dfm Eu sugeriria que você desinstalasse este seu componente quickreport. Esse desistalar, implica em, preferencialmente, remover todos estes arquivos que fazem parte dele - normalmente iniciando com "Q". Se você tem a versão Standad (a que acompanha o Delphi7 por padrão), a versão oficial é a 3.5.1 como lhe citei. Vou postar o link direto para ela http://ftp.qbss.com/qr0/QRSTD351D7.EXE, testei e baixa. Tentando instalar, apenas observei que ele oferece por padrão o caminho com delphi6 (mas onde estou não tem delphi,então...) - se for o caso troque para o caminho do seu delphi7. Abraços
-
José, se for importante serem maiores, me envie elas que verifico a possibilidade de anexá-las ao seu post. (é que aqui onde estou elas são bloqueadas e eu não as vejo) ;) Acontece que naquele exemplo, basta desconectar um Cliente e ele desconecta todos. Logo, os Clientes todos são desligados.... não consegui implementar! Bom, então tem algum errinho que não percebi. Verificarei e logo que puder lhe informo. Abraço
-
Brian, este é um assunto bastante "batido" por aqui. Utilizando o botão Pesquisar e procurando por tray você tem todos estes resultados - veja este link
-
Esta parte eu não tenho nada implementado, então, espero que outro colega possa lhe ajudar.Mas, apenas para melhorar a informação... O que você quer é que sua aplicação entre no ar logo que o Windows inicia e bloqueie o acesso do usuário a qualquer coisa nele até que seja feito o login válido. É isto mesmo? Quanto a não fechar. Mesmo sem o "X", pode ser utilizado o ALT+F4. Então, o negócio é você interceptar o evento CloseQuery e setar a variável CanClose apenas quando o tempo se esgotar. Algo tipo:procedure TForm1.Form1Close(Sender :TObject; CanClose :Boolean); begin CanClose := <timer zerado>; // já que é contagem regressiva end; Para esta parte leia deste post em diante; Abraços
-
José, na parte em que você comentou: "//Arranjo encontrado para apagar Cliente quando ele se desconecta", acredito que você poderia fazer isto de forma mais simples se utilizar o evento ClientDisconnect. Se você observar aquele exemplo inicial que postei, nele o servidor retira da lista (listbox de clients) o client que desconectou-se. você também deverá preocupar-se, nos clients, com quando o Server "sair do ar". Pode ocorrer de o server ser encerrado ou o micro onde ele roda, ser reiniciado. Inclusive se esta for uma situação crítica para o processamento das informações recebidas, aconselho você a avaliar o uso de uma tabela em banco de dados, ou mesmo uma coisa bem leve como um simples arquivo atualizado pelo Server. Abraços p.s. José, tomei a liberdade de editar seu código, ajustando a identação para facilitar a visualização/leitura das estruturas.
-
Não se desespere. :D É que o quick não foi instalado por padrão. Dá uma olhada neste tópico: Qreport No Delphi7, Como instalar a guia Qreport no delphi7? Mas já que vai instalar denovo, sugiro que você baixe a versão atualizada: QuickReport 3.5.1 Standard for Delphi 7 (você precisará apenas informar seu e-mail para baixar)
-
(Resolvido) Delphi 2007 dbxora30.dll não existe..
pergunta respondeu ao Renatosky de Micheus em Delphi, Kylix
Eu não tenho acesso daqui, mas confira o endereço que está neste tópico (ref. ActiveDelphi) -
acho que para tentar ajudá-lo vale o que o Jhonas sugeriu.Mas ainda perguntaria: - Por acaso no form principal, da sua aplicação, você habilitou a propriedade KeyPreview? - como ficou estruturada sua aplicação em termos de tela. O que está no programa e o que está em DLL? (acho que é mais ou menos ao que o Jhonas se refere) Abraços
-
Outra coisa, observei que você deixou a tabela de de caracteres com NONE. Antes que você comece com problemas, é bom já ir começando do jeito mais certo.;) Sugiro que você utilize WIN1252, para evitar problemas futuros com ordenação de nomes com caracteres acentuados. Veja este artigo - Como fazer para utilizar caracteres acentuados (português) e obter ordenação correta nos índices ? - ele vai lhe explicar melhor a que me refiro. E para relembrar, algo que já estava naquele post antigo que lhe postei: Falando daquele outro post, lembre que havia comentado de estar fazendo um tutorial de instalação do banco Firebird e IBExpert. Pois é, é meio tarde, mas pode servir a outros. (fiz ainda para a versão 1.5.4, mas serve para as recentes) Também havia começado uma outra instrução de como migrar do banco MSAccess para Firebird e, paralelamente, Paradox para Firebird, mas está bem parado. Abraços Manual_instalacao_Firebird_e_IBExpert.zip
-
Eder, não é uma questão da versão do IBExpert. Isto seria uma característica do banco ao processar a conexão. Qual foi a versão do Firebird que você instalou?
-
(Resolvido) Ajuda com função Update usando Delphi 7 + access + ADO
pergunta respondeu ao Flávio Borges de Micheus em Delphi, Kylix
Flávio, há erros sim. Vamos ver apenas sua instrução SQL: Update Subgeneros SET Desc_Subgenero, Cod_Genero = escSubg, :CodGen where Cod_Subgenero = :CodSubg Veja se não ficou melhor agora: ;)Update Subgeneros SET Desc_Subgenero = :escSubg, Cod_Genero = :CodGen where Cod_Subgenero = :CodSubg -
fernandopiccini, se você utiliza Oracle, a tabela Paradox que você está criando é algo temporário? Eu tenho um código similar a este seu, e funciona sem problemas. A única diferença entre o meu e o seu código está no DatabaseName, em que você utiliza um ALIAS (CORP) e eu um path (TablePath = c:\temp): procedure TForm1.CriaTabelaImportacao(TablePath :string); var Table :TTable; begin Table := TTable.Create(nil); try Table.Close; {o mesmo que Active:=False } Table.DatabaseName := TablePath; { um alias BDE ou diretório} Table.TableType := ttParadox; { deve ser especificado quando se cria uma tabela} Table.TableName := 'client'; { extensão .DB é opcional} if (not Table.Exists) then begin { definindo alguns campos} with Table.FieldDefs do begin Clear; { limpa a tabela antiga} { a chave primária deve ser criada com o atributo "required" como true: } Add('Codigo', ftAutoInc, 0, true); // o TRUE significa que é requerido - não pode ser nulo Add('CodProd', ftString, 5, true); Add('Nome', ftString, 20, false); Add('Cidade', ftString, 10, false); Add('UF', ftString, 2, false); end; { "with Table1.FieldDefs" } { adiciona a chave primária e três secundárias} with Table.IndexDefs do begin Clear; {limpa os antigos} { A chave priária Paradox não tem nome.} { Nunca de o mesmo nome do campo ao índice se fizer isso não poderá usar ixCaseInsensitive } Add('', 'codigo', [ixPrimary]); { A opção ixCaseInsensitive não é valida para chaves primárias} { Nunca crie mais indices do que você precisar. Você poderá fazer isso depois} Add('NomeIDX', 'Nome', [ixCaseInsensitive]); Add('CidadeIDX', 'Cidade', [ixCaseInsensitive]); { combinando um índice com dois campos: } Add('TesteIDX', 'Cidade;Nome', [ixCaseInsensitive]); end; { with "Table1.IndexDefs" } Table.CreateTable; end; Table.EmptyTable; Table.Open; Except MessageDlg('Error na Criação da Tabela ou Índice', mtError, [mbOK],0); end; { try...except } end; Logo, vem a pergunta: Este seu alias se refere a que tipo de banco de dados? Oracle ou Paradox? Você poderia experimentar colocar um path no lugar do seu alias e testar se o arquivo seria criado com sucesso neste lugar. Pelo menos, teríamos a pista de que o problema pode residir na definição do ALIAS. Abraços
-
Apenas complementando que seria de bom hábito, utilizar a extensão padrão do banco utilizado. O Firebird há algum tempo, tomou seu próprio rumo, e utilizar a extensão GDB que é a do Interbase, pode gerar algum tipo de confusão para quem pensar em simplesmente transportá-lo para um gerenciador Interbase. As estruturas internas não são mais, necessariamente as mesmas. O Firebird está crescendo muito (em termos de "poder"). Esta semana foi liberado o RoadMap 2008, com a previsão do avanço. Dê uma olhada nestes sites e se registre se for necessário - é interessante acompanhar o que anda acontecendo em torno do banco: - Site oficial (Inglês) - FireBird.Br (português) - FireBase (português) procure as sessões "Artigos" Documentação no site oficial - porém são poucos que tem versão pt-br (português brasileito) Abraços
-
como é que você está fazendo isto - post o código que você está usando.
-
slinkkkk, experimente o evento OnSessionStart. Neste evento, utilize a propriedade RemoteHost de Sender para saber "quem" está iniciando a sessão. algo assim: procedure TMnuPrincipal.IdHTTPServer1SessionStart(Sender: TIdHTTPSession); begin ListBox1.Items.Add(Sender.RemoteHost); end; Acho que deve servir. Experimente.
-
você diz remover os campos do seu dataset, que você adicionou em design-time?Se for isto, experimente: <dataset>.Fields.Clear; é conveniente o seu dataset deve estar fechado antes de executar esta operação.