
Gabriel Cabral
Membros-
Total de itens
406 -
Registro em
-
Última visita
Tudo que Gabriel Cabral postou
-
Bom dia galera... então...gostaria de fazer uma busca dinamica em um dbgrid..assim, conforme vou escrevendo em um edit, o registro vai sendo localizado no dbgrid... já fiz um desse em vb, em que a linha do registro localizado ia ficando em azul e tudo mais... mas no delphi, segui a explicação de um amigo mas não deu certo devido ao indexfieldnames porque é preciso informar na propriedade IndexFieldNames da tabela, o campo índice eu não tinha um índice...então fui la no Database Desktop e criei um com o campo PRODES (tabela dbf) [arquivo PRODES.NDX] então fui informar o PRODES no IndexFieldNames, mas ele ainda não existia alguém conseguiria me ajudar??? ou então explicar alguma outra forma de se fazer uma busca dinamica num dbgrid?? Muito obrigado
-
Violação de acesso/ query.create(nil) e query.free
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Parece que agora consegui resolver esse problema.... espero que tenha conseguido mesmo... então...eu utilizei outra query pra fazer o incremento no código... a Query1, que eu estava utilizando para isso, além de utilizar para busca, tinha a propriedade SQL como: SELECT * FROM ESTAPRO.dbf a Query2, que estou utilizando agora somente para fazer o incremento, tem a propriedade SQL como: SELECT PROCOD FROM ESTAPRO.dbf -
Violação de acesso/ query.create(nil) e query.free
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Sim, Micheus...os pontinhos azuis estão aparecendo....mas conforme vou dando F7 aqui, não passa por nenhuma linha desse evento....a show message que eu coloquei não aparece em momento nenhum..... até tirei o if..then pra ver se mudava alguma coisa..... mas não.....tá o mesmo de sempre....grava o registro mas não gera o código.... seria bom utilizar outro evento pra incrementar o código ou esse mesmo é o ideal??? o código está assim.. procedure Tdm.tblCadProBeforePost(DataSet: TDataSet); begin if not tblCadPro.FieldByName('PROCOD').IsNull then Exit; Query1.DatabaseName := tblCadPro.DatabaseName; Query1.SQL.Clear; Query1.SQL.Add('SELECT MAX (PROCOD) FROM ESTAPRO.dbf'); Query1.Open; try ShowMessage('teste'); tblCadPro.FieldByName('PROCOD').AsString := FloatToStr(StrToFloat(Query1.Fields[0].AsString)+1); finally Query1.Close; end; end; aí o programa passa pelo if...then, não passando pelo Exit então passa pelas quatro linhas da Query1, e pára na linha Query1.Open;, dando o seguinte erro: 'Query1: Field 'PROCOD' not found'. e acusa a linha Query1.Close; -
Violação de acesso/ query.create(nil) e query.free
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
A execução não está passando por essa procedure... muito estranho, porque deveria passar independentemente do que há nela, não é?!! por que antes estava passando e agora não??? -
Violação de acesso/ query.create(nil) e query.free
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
então, Micheus... PROCOD é um campo Character de uma tabela dbf um grande dum problema....por isso sempre tenho q converter pra float pra somar e depois converter de volta pra str -
Violação de acesso/ query.create(nil) e query.free
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Entendi Micheus, no meu caso, tenho um componente Query1 no DataModule... então coloquei da forma que você indicou... procedure Tdm.tblCadProBeforePost(DataSet: TDataSet); begin if not tblCadPro.FieldByName('PROCOD').IsNull then Exit; Query1.DatabaseName := tblCadPro.DatabaseName; Query1.SQL.Clear; Query1.SQL.Add('SELECT MAX (PROCOD) FROM ESTAPRO.dbf'); Query1.Open; try tblCadPro.FieldByName('PROCOD').AsString := FloatToStr(StrToFloat(Query1.Fields[0].AsString)+1); finally Query1.Close; end; end; Mas agora ele não está gerando o código.......não está incrementando +1 ao código maximo da tabela -
Galera....não aguento mais esses erros de violação de acesso.... eu nunca sei qual o erro, onde está, o que fazer.... é o seguinte... num cadastro, faço o incremento de um campo via código... está assim.. procedure Tdm.tblCadProBeforePost(DataSet: TDataSet); begin if not tblCadPro.FieldByName('PROCOD').IsNull then Exit; dm.Query1.DatabaseName := tblCadPro.DatabaseName; dm.Query1 := dm.Query1.Create(nil); try dm.Query1.SQL.Add('SELECT MAX (PROCOD) FROM ESTAPRO.dbf'); dm.Query1.Open; try tblCadPro.FieldByName('PROCOD').AsString := FloatToStr(StrToFloat(dm.Query1.Fields[0].AsString)+1); finally dm.Query1.Close; end; finally dm.Query1.Free; end; end; aí vou testar o programa.....clico em novo, preencho os campos, e gravo... ok...tudo certo....o programa gera o código desse produto somando um ao max... mas se vou cadastrar outro logo em seguida, clico em novo, preencho os campos e aí quando clico em gravar, dá o seguinte erro: Project winsuperm.exe raised exception class EAccessViolation with message 'Access violation at address 00499E41 in module 'winsuperm.exe'. Read of address 0000001C'. e acusa essas linhas dm.Query1 := dm.Query1.Create(nil); e dm.Query1.Free; alguém consegue me ajudar ae??? Muito obrigado
-
(Resolvido) Converter string pra int em tempo de execução
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
então, Jhonas..... o problema era simples demais e pura falta de atenção da minha parte.. o numero que estava como string no campo PROCOD e eu queria converter pra inteiro pra fazer a soma era muito grande, então era preciso converter pra float, não pra int.... então converti pra float e deu tudo certo.... muito obrigado -
(Resolvido) Converter string pra int em tempo de execução
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
então, Jhonas.... não deu certo da forma que você indicou.. olha só como estou fazendo....consegue ver algum erro?? ou alguma coisa faltando?? ou sobrando??? procedure Tdm.tblCadProBeforePost(DataSet: TDataSet); begin if not tblCadPro.FieldByName('PROCOD').IsNull then Exit; dm.Query1 := dm.Query1.Create(nil); try dm.Query1.SQL.Add('SELECT MAX (PROCOD) FROM ESTAPRO.dbf'); dm.Query1.Open; try tblCadPro.FieldByName('PROCOD').AsString := (IntToStr(StrToInt(dm.Query1.Fields[0].AsString)+1)); finally dm.Query1.Close; end; finally dm.Query1.Free; end; end; end. Aí o programa dá erro, dizendo que o campo de numero tal [o campo max], não é um inteiro válido, devido a tentativa da soma. -
(Resolvido) Converter string pra int em tempo de execução
uma questão postou Gabriel Cabral Delphi, Kylix
Em uma tabela dbf, tenho um campo chamado PROCOD.....que armazena o codigo dos registros... como essa tabela não tem campo autoincremento, eu adiciono +1 via código mesmo.... mas esse campo é string ¬¬ logo, não consigo somar.... como eu posso fazer pra converte-lo pra inteiro, somar +1 e depois converte-lo pra string??? Procurei em varios lugares mas não encontrei....até tem um tópico com um problema parecido.....mas não foi resolvido alguém saberia ae??? Obrigado -
Autoincremento em tabela dbf
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Mas veja.... estou abrindo a tabela antes de navegar nela... procedure TfrmCadPro.btnUltimoClick(Sender: TObject); var controlaEst, cotacao, arqBal, pesUnd, balCaixa: string; begin dm.tblCadPro.Open; //exceto aqui dm.tblCadPro.Last; mesmo dessa forma, se eu der um close ao gravar a tabela, dá aquele erro de violação de acesso..... a única coisa q deu certo foi não fechar a tabela depois de gravar. (???????) -
Autoincremento em tabela dbf
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
realmente....eu tirei o close da tabela ao gravar....agora não dá mais erro..... mas uma vez me disseram q sempre precisa fechar a tabela depois de uma gravação....senao da uns erros.... -
Autoincremento em tabela dbf
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
procedure TfrmCadPro.btnGravarClick(Sender: TObject); begin txtAux.SetFocus; //deixar campos bloqueados txtCadPro_CodPro .ReadOnly := True; txtCadPro_Secao .ReadOnly := True; txtCadPro_DataCad .ReadOnly := True; txtCadPro_Desc .ReadOnly := True; txtCadPro_Estoque .ReadOnly := True; txtCadPro_UndVen .ReadOnly := True; txtCadPro_Icms .ReadOnly := True; txtCadPro_EstMin .ReadOnly := True; txtCadPro_EstMax .ReadOnly := True; txtCadPro_PreCus .ReadOnly := True; txtCadPro_Vml .ReadOnly := True; txtCadPro_PreVen .ReadOnly := True; txtCadPro_CodForn1 .ReadOnly := True; txtCadPro_CodForn2 .ReadOnly := True; txtCadPro_CodForn3 .ReadOnly := True; txtCadPro_CodForn4 .ReadOnly := True; txtCadPro_Fracao .ReadOnly := True; txtCadPro_UndCompra .ReadOnly := True; txtCadPro_Local .ReadOnly := True; txtCadPro_CodOrigem .ReadOnly := True; txtCadPro_DiasVal .ReadOnly := True; txtCadPro_PreOfe .ReadOnly := True; txtCadPro_DataIniOfe .ReadOnly := True; txtCadPro_DataFinOfe .ReadOnly := True; txtCadPro_EstoqPrat .ReadOnly := True; txtCadPro_QtdeMinPrat .ReadOnly := True; txtCadPro_TotalComp .ReadOnly := True; txtCadPro_TotalVend .ReadOnly := True; txtCadPro_DataUlt .ReadOnly := True; txtCadPro_FornUlt .ReadOnly := True; txtCadPro_QtdeUlt .ReadOnly := True; txtCadPro_PreUlt .ReadOnly := True; txtCadPro_DataEnt .ReadOnly := True; txtCadPro_QtdeEnt .ReadOnly := True; txtCadPro_DataSai .ReadOnly := True; txtCadPro_QtdeSai .ReadOnly := True; btnNovo .Enabled := True; btnGravar .Enabled := False; btnAlterar .Enabled := True; btnExcluir .Enabled := True; btnBuscar .Enabled := True; btnPrimeiro .Enabled := True; btnAnterior .Enabled := True; btnProximo .Enabled := True; btnUltimo .Enabled := True; btnSair .Enabled := True; //impedir que o campo receba o foco com o Tab txtCadPro_CodPro .TabStop := False; txtCadPro_Secao .TabStop := False; txtCadPro_DataCad .TabStop := False; txtCadPro_Desc .TabStop := False; txtCadPro_Estoque .TabStop := False; txtCadPro_UndVen .TabStop := False; txtCadPro_Icms .TabStop := False; txtCadPro_EstMin .TabStop := False; txtCadPro_EstMax .TabStop := False; txtCadPro_PreCus .TabStop := False; txtCadPro_Vml .TabStop := False; txtCadPro_PreVen .TabStop := False; txtCadPro_CodForn1 .TabStop := False; txtCadPro_CodForn2 .TabStop := False; txtCadPro_CodForn3 .TabStop := False; txtCadPro_CodForn4 .TabStop := False; txtCadPro_Fracao .TabStop := False; txtCadPro_UndCompra .TabStop := False; txtCadPro_Local .TabStop := False; FrameConEstoq .TabStop := False; ProEstSim .TabStop := False; ProEstNao .TabStop := False; FrameCotacao .TabStop := False; ProCotSim .TabStop := False; ProCotNao .TabStop := False; txtCadPro_CodOrigem .TabStop := False; FrameBalanca .TabStop := False; ProPesSim .TabStop := False; ProPesNao .TabStop := False; FramePesUnd .TabStop := False; ProUnpPeso .TabStop := False; ProUnpUnidade .TabStop := False; txtCadPro_DiasVal .TabStop := False; FrameBalancaCaixa .TabStop := False; ProBalSim .TabStop := False; ProBalNao .TabStop := False; txtCadPro_PreOfe .TabStop := False; txtCadPro_DataIniOfe .TabStop := False; txtCadPro_DataFinOfe .TabStop := False; txtCadPro_EstoqPrat .TabStop := False; txtCadPro_QtdeMinPrat .TabStop := False; txtCadPro_TotalComp .TabStop := False; txtCadPro_TotalVend .TabStop := False; FrameUltCompra .TabStop := False; txtCadPro_DataUlt .TabStop := False; txtCadPro_FornUlt .TabStop := False; txtCadPro_QtdeUlt .TabStop := False; txtCadPro_PreUlt .TabStop := False; FrameUltMovEst .TabStop := False; txtCadPro_DataEnt .TabStop := False; txtCadPro_QtdeEnt .TabStop := False; txtCadPro_DataSai .TabStop := False; txtCadPro_QtdeSai .TabStop := False; ProEstSim .Checked := False; ProEstNao .Checked := False; ProCotSim .Checked := False; ProCotNao .Checked := False; ProPesSim .Checked := False; ProPesNao .Checked := False; ProUnpPeso .Checked := False; ProUnpUnidade .Checked := False; ProBalSim .Checked := False; ProBalNao .Checked := False; dm.tblCadPro.Post; dm.Query2.Close; dm.Query2.SQL.Clear; dm.Query2.SQL.Add('SELECT * FROM ESTAPRO.dbf'); dm.tblCadPro.Close; end; O erro q dá quando clico em qualquer um dos botoes de navegação de registro, se dá nas linhas do codigo a seguir: procedure TfrmCadPro.btnUltimoClick(Sender: TObject); var controlaEst, cotacao, arqBal, pesUnd, balCaixa: string; begin dm.tblCadPro.Open; //exceto aqui dm.tblCadPro.Last; //e aqui controlaEst := txtCadPro_ControlaEst.Text; cotacao := txtCadPro_Cotacao.Text; arqBal := txtCadPro_ArqBal.Text; pesUnd := txtCadPro_PesUnd.Text; balCaixa := txtCadPro_BalCaixa.Text; if (controlaEst = 'S') then begin ProEstSim.Checked := True; end else if (controlaEst = 'N') then begin ProEstNao.Checked := True; end else begin ProEstSim.Checked := False; ProEstNao.Checked := False; end; if (cotacao = 'S') then begin ProCotSim.Checked := True; end else if (cotacao = 'N') then begin ProCotNao.Checked := True; end else begin ProCotSim.Checked := False; ProCotNao.Checked := False; end; if (arqBal = 'S') then begin ProPesSim.Checked := True; end else if (arqBal = 'N') then begin ProPesNao.Checked := True; end else begin ProPesSim.Checked := False; ProPesNao.Checked := False; end; if (pesUnd = 'P') then begin ProUnpPeso.Checked := True; end else if (pesUnd = 'U') then begin ProUnpUnidade.Checked := True; end else begin ProUnpPeso.Checked := False; ProUnpUnidade.Checked := False; end; if (balCaixa = 'S') then begin ProBalSim.Checked := True; end else if (balCaixa = 'N') then begin ProBalNao.Checked := True; end else begin ProBalSim.Checked := False; ProBalNao.Checked := False; end; todos os botoes de navegação possuem esse codigo... serve para, na navegação, o RadioButton ficar selecionado de acordo com o que está gravado no banco... não sei porque aponta isso no erro -
Autoincremento em tabela dbf
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Eu apontei para o primeiro, apontei para o ultimo, mas continua dando o mesmo erro de violação de acesso.... me falaram pra eu criar uma outra query pra selecionar tudo depois de gravar, mas também não deu certo, da sempre o mesmo erro =/ -
Autoincremento em tabela dbf
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Então, Jhonas....acabou que deu certo com o select max..... toda vez que eu salvo um registro, ele incrementa o código corretamente.... mas se clico em um dos botoes de navegação de registro [primeiro, anterior, proximo ou ultimo], logo apos clicar em salvar, o programa acusa erro de violação de acesso. não sei porque....não sei o que pode estar acontecendo pra dar esse erro... uma das mensagens que apareceram foi essa Project winsuperm.exe raised exception class EAccessViolation with message 'Access violation at address 0048343C in module 'winsuperm.exe'. Read of address 202020A4' já apareceram outras mensagens com esse mesmo corpo, só mudavam os numeros de endereço. -
Autoincremento em tabela dbf
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
então... é que eu tenho uma tabela aqui em que os valores dos códigos não estão ordenados... e eu queria pegar o codigo do ultimo registro e acrescentar 1 assim, a partir daí, os codigos ficariam ordenados. -
Ae galera....tudo certo?!!! eu procurei aqui e em outros lugares sobre autoincremento em tabela dbf mas não encontrei naaaada então vou postar aqui o que tentei fazer e não deu certo pra vocês poderem analisar e tentar me ajudar... como no database desktop não tem a opção de um campo de tabela dbf ser autoincremento, preciso fazer isso na mao....então tentei o seguinte: procedure Tdm.tblCadProBeforePost(DataSet: TDataSet); begin if not tblCadPro.FieldByName('PROCOD').IsNull then Exit; dm.Query1 := dm.Query1.Create(nil); try dm.Query1.DatabaseName := tblCadPro.DatabaseName; dm.Query1.SQL.Add('SELECT MAX (PROCOD) FROM ESTAPRO.dbf'); dm.Query1.Open; try tblCadPro.FieldByName('PROCOD').AsInteger := dm.Query1.Fields[0].AsInteger+1; finally dm.Query1.Close; end; finally dm.Query1.Free; end; end; end. Mas ele está selecionando não o código do ultimo registro, mas o código maior entre todos os registros
-
Então...eu acho que o erro se dá quando um campo fica vazio, porque fiz um teste prenchendo todos os campos e inseriu tudo sem erro... Aí fiz um outro teste, preenchendo todos com os mesmos valores anteriores, exceto um que deixei vazio...então deu o erro: Project winsuperm.exe raised exception class EConvertError with message ''' is not a valid floating point value.' Quando deixo vazio um campo do tipo data, dá o erro: Project winsuperm.exe raised exception class EConvertError with message '' / / ' is not a valid date.' A inserção eu faço com instrução SQL..... dm.Query1.Close; dm.Query1.SQL.Clear; dm.Query1.SQL.Add('INSERT INTO ESTAPRO(ESTAPRO.PROCOD,ESTAPRO.PROTIP,'); dm.Query1.SQL.Add('ESTAPRO.PROCAD,ESTAPRO.PRODES,ESTAPRO.PROQTD,'); dm.Query1.SQL.Add('ESTAPRO.PROUND,ESTAPRO.PROICM,ESTAPRO.PROMIN,'); dm.Query1.SQL.Add('ESTAPRO.PROMAX,ESTAPRO.PROCUS,ESTAPRO.PROLUC,ESTAPRO.PROPRE,'); dm.Query1.SQL.Add('ESTAPRO.PROFOR,ESTAPRO.PROFO2,ESTAPRO.PROFO3,ESTAPRO.PROFO4,'); dm.Query1.SQL.Add('ESTAPRO.PROFRA,ESTAPRO.PROUNC,ESTAPRO.PROLOC,ESTAPRO.PROORI,'); dm.Query1.SQL.Add('ESTAPRO.PRODVL,ESTAPRO.PROPOF,ESTAPRO.PROIOF,ESTAPRO.PRODOF,'); dm.Query1.SQL.Add('ESTAPRO.PROEPR,ESTAPRO.PROPRT,ESTAPRO.PROCOM,ESTAPRO.PROVEN,'); dm.Query1.SQL.Add('ESTAPRO.PRODTC,ESTAPRO.PROFOC,ESTAPRO.PROQDC,ESTAPRO.PROPRC,'); dm.Query1.SQL.Add('ESTAPRO.PROENT,ESTAPRO.PROQTE,ESTAPRO.PROSAI,ESTAPRO.PROQTS)'); dm.Query1.SQL.Add('VALUES (:codpro,:secao,:datacad,:desc,:estoque,:undvenda,'); dm.Query1.SQL.Add(':icms,:estmin,:estmax,:precus,:vml,:preven,'); dm.Query1.SQL.Add(':codforn1,:codforn2,:codforn3,:codforn4,'); dm.Query1.SQL.Add(':fracao,:undcompra,:local,:codorigem,:diasval,:preofe,'); dm.Query1.SQL.Add(':datainiofe,:datafinofe,:estoqprat,:qtdeminprat,:totalcomp,:totalvend,'); dm.Query1.SQL.Add(':datault,:fornult,:qtdeult,:preult,:dataent,:qtdeent,:datasai,:qtdesai)'); dm.Query1.ParamByName('codpro') .value := txtCadPro_CodPro.Text; dm.Query1.ParamByName('secao') .value := txtCadPro_Secao.Text; dm.Query1.ParamByName('datacad') .value := StrToDate(txtCadPro_DataCad.Text); dm.Query1.ParamByName('desc') .value := txtCadPro_Desc.Text; dm.Query1.ParamByName('estoque') .value := StrToFloat(txtCadPro_Estoque.Text); dm.Query1.ParamByName('undvenda') .value := txtCadPro_UndVen.Text; dm.Query1.ParamByName('icms') .value := StrToFloat(txtCadPro_Icms.Text); dm.Query1.ParamByName('estmin') .value := StrToFloat(txtCadPro_EstMin.Text); dm.Query1.ParamByName('estmax') .value := StrToFloat(txtCadPro_EstMax.Text); dm.Query1.ParamByName('precus') .value := StrToFloat(txtCadPro_PreCus.Text); dm.Query1.ParamByName('vml') .value := StrToFloat(txtCadPro_Vml.Text); dm.Query1.ParamByName('preven') .value := StrToFloat(txtCadPro_PreVen.Text); dm.Query1.ParamByName('codforn1') .value := txtCadPro_CodForn1.Text; dm.Query1.ParamByName('codforn2') .value := txtCadPro_CodForn2.Text; dm.Query1.ParamByName('codforn3') .value := txtCadPro_CodForn3.Text; dm.Query1.ParamByName('codforn4') .value := txtCadPro_CodForn4.Text; dm.Query1.ParamByName('fracao') .value := StrToFloat(txtCadPro_Fracao.Text); dm.Query1.ParamByName('undcompra') .value := txtCadPro_UndCompra.Text; dm.Query1.ParamByName('local') .value := txtCadPro_Local.Text; dm.Query1.ParamByName('codorigem') .value := txtCadPro_CodOrigem.Text; dm.Query1.ParamByName('diasval') .value := StrToFloat(txtCadPro_DiasVal.Text); dm.Query1.ParamByName('preofe') .value := StrToFloat(txtCadPro_PreOfe.Text); dm.Query1.ParamByName('datainiofe') .value := StrToDate(txtCadPro_DataIniOfe.Text); dm.Query1.ParamByName('datafinofe') .value := StrToDate(txtCadPro_DataFinOfe.Text); dm.Query1.ParamByName('estoqprat') .value := StrToFloat(txtCadPro_EstoqPrat.Text); dm.Query1.ParamByName('qtdeminprat') .value := StrToFloat(txtCadPro_QtdeMinPrat.Text); dm.Query1.ParamByName('totalcomp') .value := StrToFloat(txtCadPro_TotalComp.Text); dm.Query1.ParamByName('totalvend') .value := StrToFloat(txtCadPro_TotalVend.Text); dm.Query1.ParamByName('datault') .value := StrToDate(txtCadPro_DataUlt.Text); dm.Query1.ParamByName('fornult') .value := txtCadPro_FornUlt.Text; dm.Query1.ParamByName('qtdeult') .value := StrToFloat(txtCadPro_QtdeUlt.Text); dm.Query1.ParamByName('preult') .value := StrToFloat(txtCadPro_PreUlt.Text); dm.Query1.ParamByName('dataent') .value := StrToDate(txtCadPro_DataEnt.Text); dm.Query1.ParamByName('qtdeent') .value := StrToFloat(txtCadPro_QtdeEnt.Text); dm.Query1.ParamByName('datasai') .value := StrToDate(txtCadPro_DataSai.Text); dm.Query1.ParamByName('qtdesai') .value := StrToFloat(txtCadPro_QtdeSai.Text); dm.Query1.ExecSQL; dm.tblCadPro.Close; Isso estaria ajudando no erro???
-
Olá pessoal... como faço pra inserir no banco um campo vazio??? pois no formulario aqui, tenho DBEdit's que não precisam ser preenchidas obrigatoriamente... mas quando vou gravar, dá erro falando que ' ' não é um valor válido...
-
Bom dia pessoal.... meu problema é o seguinte.... em um form de cadastro, estou usando Edit e não DBEdit.... Utilizo BDE e as inserções, alterações, exclusoes e tal, faço com instruções SQL... mas e nos botoes de navegação First, Previous, Next e Last ??? como fazer??? Pois como não são DBEdit's, não estao vinculados a nenhum campo, então não acontece nada ao clicar nos botes com códigos do tipo: procedure TfrmCadPro.btnProximoClick(Sender: TObject); begin dm.tblCadPro.Next; end; alguém conseguiria me ajudar?? Obrigado
-
Erro ao inserir data no banco
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Muito obrigado, Jhonas... funcionou dessa forma que você disse....era mesmo só converter os tipos de dados.... assim como fiz .. dm.Query1.ParamByName('datacad').value := strtodate(txtDataCad.Text); tambem precisei fazer dm.Query1.ParamByName('cod').value := strtofloat(txtCod.Text); Valeu -
E ae galera.....então...o seguinte... o código abaixo é para inserir dados no banco....está funcionando, exceto quando eu coloco uma data no meio...... procedure TfrmCadPro.btnGravarClick(Sender: TObject); begin dm.Query1.Close; dm.Query1.SQL.Clear; dm.Query1.SQL.Add('INSERT INTO ESTAPRO(ESTAPRO.PROCOD,ESTAPRO.PROTIP,ESTAPRO.PROCAD,ESTAPRO.PRODES) VALUES (:cod,:secao,:datacad,:desc)'); dm.Query1.ParamByName('cod').value := txtCod.Text; dm.Query1.ParamByName('secao').value := txtSecao.Text; dm.Query1.ParamByName('datacad').value := txtDataCad.Text; dm.Query1.ParamByName('desc').value := txtDesc.Text; dm.Query1.ExecSQL; end; por causa da data, dá o seguinte erro: Project winsuperm.exe raised exception class EDBEngineError with message 'Type mismatch in expression.'. o que eu devo fazer??? Obrigado
-
Bom dia, galera... sou iniciante e até agora só sei inserir, alterar e excluir dados usando os componentes BDE. então...eu gostaria de saber se é possível eu inserir, alterar, excluir e fazer busca de dados em uma tabela dbf utilizando instruções SQL... Qual componente eu deveria usar? Como usar? alguém poderia me dar um exemplo, por favor?!!! Muito Obrigado.
-
Campo não grava no banco se não perder o foco
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Tá incluído sim..... Até porque quando estou numa alteração, posso estar em qualquer DBEdit, altero algo, aí não dou Tab e clico no botao pra gravar a alteração.... a alteração feita no ultimo DBEdit mexido não é gravada. -
Campo não grava no banco se não perder o foco
pergunta respondeu ao Gabriel Cabral de Gabriel Cabral em Delphi, Kylix
Não....esse DBEdit não possui código em nenhum evento.