
Arlon
Membros-
Total de itens
371 -
Registro em
-
Última visita
Tudo que Arlon postou
-
Pow aí, continua dando aquele erro mesmo eu fazendo isso aqui abaixo. Será q ainda pode ser algum outro tipo de conersão?? Eu já tentei essas aqui abaixo e nenhuma delas deu certo. Em campo alfanumérico eu estou usando: DM.QrConsPedidos.Params[0].AsString := UpperCase(Edit1.Text); e em campo autoincremento (integer, eu acho) e data q conversão devo fazer?? * Data: - DM.QrConsPedidos.Params[0].AsDateTime := StrToDate(Edit1.Text); - DM.QrConsPedidos.Params[0].AsDate := StrToDate(Edit1.Text); *Autoincremento: - DM.QrConsPedidos.Params[0].ASInteger := StrToInt(Edit1.Text); já tentei as três acima e nehuma delas deu certo.
-
realmente... Como é q eu não tinha percebido isso antes, será q eu sou burro ou desatencioso?? rsrs valeu a ajuda maluco
-
DM.QrConsPedidos.Close; DM.QrConsPedidos.Sql.Text := 'Select Cod_Cliente2, Data, Hora, Atendente, Total From Pedidos ' + 'Where Upper(Cod_Cliente2) =:Cod_Cliente2Busca'; DM.QrConsPedidos.Params[0].AsString := UpperCase(Edit1.Text); DM.QrConsPedidos.open; O código acima é usado para uma filtragem através do campo Cod_Cliente2 q é um campo alfanumérico. Em um outro formulário eu faço uma filtragem bastante parecida com esta, só q através do campo 'Atendente' q tb é um campo alfanumérico.Tenho mais duas consultas: OrdemServico (campo autoincremento) e Data (campo date), só q quando eu digito o número da Ordem de Serviço ou a Data em que o registro foi feito o Delphi me retorna o seguinte erro: Tipe mismatch in expression. Se eu for fazer uma busca por qualquer outro campo ela funciona beleza, agora com esses dois campos, um autoincremento e o outro date, aí dá pau!! Existe alguma impossibilidade de se fazer esse tipo de consulta?? estou usando Paradox, mas acho q o problema é com SQL.
-
aí, pode mandar pra mim também?? arlon@click21.com.br
-
vai nesse site aqui na sessão 'dicas' e procura alguma coisa a respeito do q você quer, só q você precisa se cadastrar. Tem um sistema de busca q ajuda muito achar a dica q você quer.
-
acho q depois de todas aquelas complicações essa é mais fácil de resolver, mas eu não estou conseguindo... o formulário de edição é o mesmo de inserção, por isso eu uso a variável 'opcao', mas o Corposemalma já me deu uma dica, disse pra usar o tag do formulário e eu nem sabia q o tag servia pra isso, mas... vivendo e aprendendo. Evento OnShow do form: if opcao = 1 then begin <-- inserção LimpaTela; MaskEdit1.setfocus; BtnOK.enabled := false; end; if opcao = 2 then begin <-- edição MaskEdit1.Text := DM.TBClientesCliente.Value; MaskEdit1.Enabled := false; DM.TBClientes.Cancel; DM.TBClientes.Edit; DBEdit3.SetFocus; o problema é seguinte: se, por exemplo, eu tiver 5 clientes cadastrados e editar o segundo registro, o ponteiro da tabela vai pro último registro, daí eu clico no botão 'cancelar' q possui apenas uma linha de código: 'DM.TBClientes.Cancel;' e se eu clicar no registro novamente e clicar no botão Editar aí sim eu consigo editar os seus dados. Não sei se seria o caso, mas existe alguma maneira de eu colocar o ponteiro da tabela exatamente naquele registro q eu quero editar?? Se você reparar lá no evento OnShow, antes de eu dar o comando de editar eu cancelo a tabela, a mesma coisa q o botão cancelar faz, estranho né!!?? Ah, mais uma coisinha: tem um outro formulário, o de Pedidos, e nele eu coloquei alguns campos com preenchimento automático, através de buscas SQL, pox exemplo: Tem um DBEdit e ao lado dele um DBText, no evento OnExit do DBEdit eu coloquei uma busca q ele me retorna no DBText o nome do produto correspondente ao código q eu digitei no DBEdit, até aí tudo certo, só q quando eu gravo na tabela só aparece nela o que eu digitei no DBEdit o q eu digitei no DBText não grava, eu já setei as propriedades DataSet E DataField do DBText mas tá acontecendo isso, é normal ou tenho q usar: DM.TBPedidosDescricao.Value := DBText1.Caption ?? Valeu qualquer ajuda galerinha...
-
Eu peguei esse código aki na net mas não cheguei a testar pra var se dava erto não, qualquer coisa posta aí... procedure TForm1.FormCreate(Sender: TObject); var c,d:Tbitmap; begin c:=Tbitmap.Create; c.LoadFromFile('C:\windows\ondas.bmp'); newtypenav(dbnavigator1).buttons[nbinsert].Glyph:=c; d:=Tbitmap.Create; d.LoadFromFile('C:\windows\egito.bmp'); newtypenav(dbnavigator1).buttons[nbdelete].Glyph:=d; end; Para utilizar esta dica coloque o seguinte código na seção Type: NewTypeNav = class( TDbNavigator );
-
Quando for fazer uma pergunta relacionada a alguma linguagem mesmo q envolva BD ou SQL, poste a msg no fórum correspondente àquela linguagem, falou... Código do TQuery: Select * From Tabela Where Nome Like “LetraInicial%" Código do botão 'Buscar': --> Troque o nome Produtos pelo nome da sua tabela <-- DM.QrProdutos.Close; DM.QrProdutos.SQL.Text := 'Select * From Produtos ' + 'Where Upper(Nome) Like :LetraInicial'; DM.QrProdutos.Params[0].AsString := UpperCase('%' + Edit1.Text + '%'); DM.QrProdutos.open; Caso não dê certo, abra um tópico lá em Delphi/Kylix, valeu...
-
Maluco, dessa forma q você escreveu tá uma parada meio loka... você pulou o comando de edição da tabela e tal... mas se você souber q tem q fazer isso... Bem, não sei se resolverá o problema, se está dando erro nessa linha de código pode ser o seguinte: não existe aquele ponto entre 'table1' e 'coluna' , seria: table1coluna.value:='300'; qualquer coisa posta ae
-
Pra não abrir outro tópico eu vou utilizar esse aki mesmo... acho q depois de todas aquelas complicações essa é mais fácil de resolver, mas eu não estou conseguindo... o formulário de edição é o mesmo de inserção, por isso eu uso a variável 'opcao', mas o Corposemalma já me deu uma dica, disse pra usar o tag do formulário e eu nem sabia q o tag servia pra isso, mas... vivendo e aprendendo. Evento OnShow do form: if opcao = 1 then begin <-- inserção LimpaTela; MaskEdit1.setfocus; BtnOK.enabled := false; end; if opcao = 2 then begin <-- edição MaskEdit1.Text := DM.TBClientesCliente.Value; MaskEdit1.Enabled := false; DM.TBClientes.Cancel; DM.TBClientes.Edit; DBEdit3.SetFocus; o problema é seguinte: se, por exemplo, eu tiver 5 clientes cadastrados e editar o segundo registro, o ponteiro da tabela vai pro último registro, daí eu clico no botão 'cancelar' q possui apenas uma linha de código: 'DM.TBClientes.Cancel;' e se eu clicar no registro novamente e clicar no botão Editar aí sim eu consigo editar os seus dados. Não sei se seria o caso, mas existe alguma maneira de eu colocar o ponteiro da tabela exatamente naquele registro q eu quero editar?? Se você reparar lá no evento OnShow, antes de eu dar o comando de editar eu cancelo a tabela, a mesma coisa q o botão cancelar faz, estranho né!!?? Ah, mais uma coisinha: tem um outro formulário, o de Pedidos, e nele eu coloquei alguns campos com preenchimento automático, através de buscas SQL, pox exemplo: Tem um DBEdit e ao lado dele um DBText, no evento OnExit do DBEdit eu coloquei uma busca q ele me retorna no DBText o nome do produto correspondente ao código q eu digitei no DBEdit, até aí tudo certo, só q quando eu gravo na tabela só aparece nela o que eu digitei no DBEdit o q eu digitei no DBText não grava, eu já setei as propriedades DataSet E DataField do DBText mas tá acontecendo isso, é normal ou tenho q usar: DM.TBPedidosDescricao.Value := DBText1.Caption ??
-
creio q o motivo do problema não seja esse, mas não custa nada tentar... esse tipo de erro acontece comigo quando eu desabilito algum campo (Edit, DBEdit, DBComboBox, etc..) ou formulário e chamo o formulário novamente sem habilitar o campo (ou o form) e o foco cai nesse campo com o mesmo desabilitado, verifique se isso pode estar acontecendo com vc.
-
O nosso amigo desalmado falou o seguinte: Cara ACHO que já saquei teu problema! você ta dando um append e depois procurando pelo código, acontece que quando você procura pelo código, o append (ou insert) é cancelado ou postado, ai cria o campo vazio!!!... E aquele erro de Db é quando vai setar o dado no campo a tabela não esta em edicao ou insercao de dados, ta ai o motivo daquele append que tu suspeitava que não precisa! daí o q q eu fiz... no código do botão inserir eu usei um .Insert, só q eu faço duas verificações e como ele falou essa parada aí em cima eu pensei: então eu devo cancelar o registro e fazer a verificação, certo. Então, nos eventos ON Change e Exit do maskedit antes de começar a rotina de verificação eu cancelei a tabela e no final do procedimento eu dei um append. Bem até agora tudo bem, mas peço ao amigo Bolo q não feche o tópico, pois como ontem à tarde tava dando certo e à noite (do nada, sem eu ter mexido no código) começou a dar errado, sei lá o q me pode acontecer dessa vez, pode deixar q se após alguns testes eu verificar q está mesmo tudo certo eu peço pra fecharem o tópico, valeu...
-
cara, eu acho q o melhor q dá pra fazer por você é o seguinte Planeta Delphi Active Delphi Clube Delphi Script Brasil - Delphi nesses links você procura mais expecificamente o q você tá afim
-
Na boa vocês podem achar q é sacanagem, mas não é não. Quando eu postei aquela msg ali em cima com os códigos o programa tava rodando beleza pura, eu entrei na internet à tarde gastando meus preciosos pulsos, debaixo de inúmeros 'desconecta logo isso garoto' da minha mãe. Saí de casa e voltei umas 9 da noite quando eu rodei o aplicativo voltou a dar o erro q tava dando antes, na boa esse tal de Delphi tá de perseguição comigo, não é possível... agora ainda são 23:15 e estou eu aki gastando mais alguns pulsos, mas pelo menos agora minha mãe tá dormindo... estou com sono, cansado de ficar desde 11 da manhã com minha bunda na cadeira tentando resolver essas desgraças desses problemas, valeu a ajuda Bolo e Corpo, mas amanhã eu posto alguma coisa aki relatando o q eu consegui resolver desses erros, valeu a ajuda galera... Já troquei insert por append e vice-versa nada dá certo, tá sinistro mesmo, mas o negócio é não desistir amanhã eu tento de novo...
-
Aí Bolo eu li o seu tópico "Nível caindo" ontem e concordo com tudo q foi dito por você e pelos outros membros do fórum, pow peço desculpas ao pessoal aqui do fórum se estou fazendo exatamente o q você estava pedindo pra evitar, mas é q existem certas dúvidas q agente vira a net de cabeça pra baixo e não consegue achar exatamente o q agente quer, por isso é q esse meu tópico q até agora só em 4 respostas tá tão grande, é q eu estou começando com delphi agora e no curso q eu fiz foi dado apenas um sistema q use banco de dados e no final ele tava cheio de bug, mas azer o q né, nenhum curso e nenhum professor são perfeitos. Resumindo o q eu estou fazendo, já q o corposemalma não entendeu direito (e creio q não tenha sido o único) vou explicar mais uma vezinha... Tenho 2 forms Clientes e Cliente, o form Clientes possui: -um toolBar com 4 botões - inserir, alterar, excluir e sair -; -um dbgrid e um dbnavigator setado para a tabela Clientes e o form Cliente é o q possui os bdedits, o form de registro propriamente dito, com dois botões - OK e cancelar -. OnClick do botão Inserir do form Clientes: DM.TBClientes.Insert; FrmCliente.Incluir; // esse frmcliente.Incluir é uma procedure q eu criei com akela parada de Ctrl + Shift + c FrmCliente.Incluir: opcao := 1;// (opcao = 1, insere / opcao = 2, edita) ShowModal; FrmCliente.FormShow: if opcao = 1 then begin DM.TBClientes.Append; <--- devo colocar o append só aqui?? LimpaTela; MaskEdit1.setfocus; end; if opcao = 2 then begin <---- edição do registro MaskEdit1.Text := DM.TBClientesCliente.Value; MaskEdit1.Enabled := false; DBEdit3.SetFocus; DBEdit3.SetFocus; DBEdit4.SetFocus; DBEdit5.SetFocus; DBEdit5.SetFocus; DBEdit6.SetFocus; DBEdit8.SetFocus; DBEdit9.SetFocus; DBEdit3.SetFocus; BtnOk.Enabled := true; end; OnExit do MaskEdit (campo 'Nome', chave primária. A verificação abaixo é pra não haver violação de chave) var cod : string; Begin if (trim(MaskEdit1.text) <> '') and (opcao = 1)then begin cod := MaskEdit1.text; if DM.TBClientes.FindKey([cod]) then begin Showmessage('Cliente já cadastrado.'); LimpaTela; MaskEdit1.SetFocus; end else begin no aplicativo q eu fiz no curso aqui tinha um DM.TBClientes.Insert, nesse agora eu não coloquei e tb não apresentou nenhum problema, porque q o professor colocou-o aki eu não sei. DBEdit3.SetFocus; end; end; end; - O programa tá rodando direito, mas eu devo colocar algum outro append?? - Apesar de ter o apend no código, é necessário o Insert no evento do botão inserir, ou só o append já basta?? - Ainda sobre o append... qual a diferença dele em relação ao insert??
-
É quase isso, só errou em uma parte: você aperta o editar, chama o form com os dbedits, com o foco em um [...] não seria dar um append? Se eu apertar o 'Incluir' acontece o q tá acima. E pra q serve o 'append'?????. Outra coisa, o post tá no evento do botão 'Gravar' q só desabilita se eu digitar um código q ainda não existe (eu faço verificação no evento OnChange do MaskEdit tb) Vou dar uma dica pra você então, não sei se estou certo mas... sempre q você der um post, dá um cancel depois q é pra tabela ficar cancelada, as mensagens de erro 'Not in edit or insert mod' pararam de aparecer em um outro formulário quando eu fiz isso. Mas o mais estranho de tudo é q em outro formulário eu uso o mesmíssimo código e dá tudo certo. Tipo, eu já "resolvi" esses problemas q tavam dando refazendo-os de uma outra forma, fiz o seguinte: coloquei o campo 'Código' como autoincremeto nas duas tabelas (Clientes e Lojas) e coloquei o campo 'Nome' como chave primária. O cliente não pode ficar esperando eu resolver o problema, né!! depois com mais calma eu descubro os motivos desse erro, mas até q a solução q eu dei ficou legal né?? Duas perguntas: Pra q serve o append? e como colocar o valor do campo autoincremento em um dbEdit? eu estou usando o evento onshow do formulário e o seguinte código: DBEdit2.Text := FloatToStr(DM.TBClientesCod_Cliente.Value); mas nã tá dando certo, ele diz q o campo não pode ser modificado.
-
Olhem só o q tá contecendo: Eu tenho 4 formulários: Clientes, Cliente, Lojas e Loja. Os formulário Clientes e Lojas possuem cada um DBGrid que mostra os registros de suas respecivas tabelas, um botão para inclusão, um pra edição e um de exclusão. Os formulários Cliente e Loja possuem os DBEdits setados para as tabelas. Quando eu clico no botão Inserir ele chama o formulário com os DBEdits, eu substitui o DBEdit Cod_Cliente e Cod_Loja(chaves primárias) por MaskEdits e faço a seguinte verificação no evento OnExit dele: if (trim(Maskedit1.text) <> '') and (opcao = 1) then begin cod := Maskedit1.text; if DM.TBClientes.FindKey([cod]) then begin Showmessage('Código de Cliente já cadastrado.'); LimpaTela; Maskedit1.SetFocus; end else begin DM.TBClientes.Insert; MaskEdit1.Enabled := false; end; end; end; Opcao é uma variável q eu criei pra diferenciar inclusão(opcao = 1) de edição (opcao = 2) já que o formulário chamado é o mesmo nas duas opções(Loja ou Cliente) só q quando o foco sai do maskEdit1 é criado um registro com todos os campos vazios inclusive a chave primária e quando eu clico no botão Inserir do formulário Lojas ou Clientes(o formulário que possui o DBGrid) aparece aquela msg de erro dizendo que a tabela não está em modo de edição ou inclusão, sendo que no código do botão eu já dou o comando de edição ou inserção e quando eu digito no maskedit acusa violação de chave, mesmo eu digitando um número que ainda não foi registrado. O mais estranho de tudo é que eu tenho mais dois formulários, Produtos e Produto, os dois com os mesmos códigos dos outros quatro formulários citados acima só que não apresentam nenhum tipo de erro e tb tenho um outro aplicativo q eu mesmo fiz com os mesmos códigos e tb não aparece esse erro. Alguém poderia me dar uma luz quanto a esse problema, pow erro de BD é chato pra cacete de resolver. estou usado paradox, não sei se tem alguma coisa haver.
-
Aí, a dúvida de vocês acabou sendo a minha tb. Se liga só no q eu tentei fazer: No evento OnExit do DBEdit: try DBedit2.SetFocus; Finally ShowMessage('Número de CPF inválido'); e tentei com Try - Except try DBedit2.SetFocus; except on EDBEditError do begin messageBeep(MB_IconExclamation); messageDLG('Número de CPF inválidoinválido!',mtError,[mbOK],0); end; end; alguém aí sabe o porque do erro?? Outra pergunta: como se trata escessões com erro de banco de dados do tipo: EDBEngineError, que exibe aquela mensagem 'Key Violation'? Tem como tratar ou só colocando uma verificação pra não haver violação de chave? A verificação eu sei fazer, mas existe alguma maneira de se tratar esses erros de banco de dados??
-
Aeeeeeeê, mais uma vez aeeeeeeê!! Cara, ficou maneiraço o sistema, a parte de consulta toda customizada ficou muito boa tb, perabéns pela primeira e tomara q bem sucedida aplicação. Tenho 3 sugestões e uma pergunta: - Faça o form pricipal maximizado (propriedade WindowState : wsMaximized) - Dá uma mudada no visual, tipo coloca uns panels e muda a cor deles, faz isso na parte de baixo dos formulários põe uns panels finos de cores diferentes, fica legal; e põe também uma figura q lembre alguma coisa relacionada à música ou multimídia no fundo do form Principal. - você podis resumir os menus CDs ... Gêneros em apenas 2 menus 'Cadastro' e 'Consulta' e os comandos sim seriam CDs ... Gêneros, entendeu?? E a pergunta: Tags são blocos de códigos né, usa-se muito isso em HTML, certo. No programa tem a opção de edição de tags eu não entendi o q seria essa edição??
-
Cara, eu nunca ouvi falar em 'FindNearest', não sei nem pra q q serve esse comando, eu tb estou começando em Delphi agora. Eu estou fazendo um sistema aqui e eu faço o seguinte: -uma busca com uma query -mudo em tempo de execução o dataset do dbgrid de tabela para a query tem o botão de editar o registro(DM.TBProdutos.Edit) e funciona normalmente. Só não sei se eu deveria jogar algum código pra evitar um possível erro, mas até agora tá funcionando direito.
-
Cara, criar um componente em tempo de execução eu acho q não tem como, o que você pode fazer é o seguinte, uma parada bem simples: procedure TForm1.FormShow(Sender: TObject); begin Edit1.Visible := false; // ou então vai na propriedade visible do edit e marca 'false' end; procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Visible := true; end; end. é isso q eu sempre faço. Aí brother, se registra e passe a fazer parte da cominidade tb, valeu.
-
Faz o seguinte: Vai no DataModule dá um duplo clique na tabela, seleciona o campo CPF, vai no object inspector, propriedade edit mask e digita 000.000.000-00 agora, pra mandar uma mensagem dizendo que o cara não digitou todos os caracteres você precisa usar tratamento de excessões com Try e Except, sabe como fazer isso?
-
Se registra nesse site aqui Planeta Delphi e vai nesse link: Link p/ apostila
-
Se liga só, uma vez eu vi um livro que ensinava a fazer figuras geométricas com o Delphi, só que eu tava sem tempo até pra folear e não deu nem pra ver se precisa de componentes adicionais (se bem que um aplicativo desse tipo com certeza depende de componentes além dos q vem com o Delphi), mas deem uma olhada no Active Delphi, no Clube Delphi e no Planeta Delphi que deve ter alguma coisa sobre isso. se acharem postem aí pra trocar umas informações com a galera.
-
Aeeeeeeeeeeeeê, agora tá baixando!! Depois que eu vê-lo postarei-te-ei o que eu achei