Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

natiii

[Resolvido] Inserir Dado no banco, pesquisando anteriormente capo

Recommended Posts

Olá amigos!Minha dúvida hoje é a seguinte:TEnho um form que possui os labels : CDC, Numero da fatura e Data de Emissão. O que tenho que fazer é o seguinte: O usuário deverá colocar em qual CDC e em qual Numero da Fatura ele quer inserir a Data de Emissão, ou seja, quando digitar CDC e Numero da fatura já terá que achar no banco o correspondente a esses dados, e inserir somente a Data de Emissão que ainda não existe. Não sei por onde começar...Estou usando Access.Espero ter ficado claro!Desde já agradeço![]'sNatiii

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu ver se entendi, no caso o usuário vai informar em um edit o CDC desejado, e em outro a FATURA.Localiza os registros que tiverem o CDC desejado e a FATURA informada, e então insere a data que foi informada em outro edit ?Seria isto ?Ficou um pouco confuso :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos!Minha dúvida hoje é a seguinte:TEnho um form que possui os labels : CDC, Numero da fatura e Data de Emissão. O que tenho que fazer é o seguinte: O usuário deverá colocar em qual CDC e em qual Numero da Fatura ele quer inserir a Data de Emissão, ou seja, quando digitar CDC e Numero da fatura já terá que achar no banco o correspondente a esses dados, e inserir somente a Data de Emissão que ainda não existe. Não sei por onde começar...Estou usando Access.Espero ter ficado claro!Desde já agradeço![]'sNatiii

vamos ver se entendi e se consigo te ajudar!!!primeira coisa...o cdc e o número de fatura pode existir a mesma combinação (cdc + nº fatura) com várias datas?!?ou no caso se você encontrar uma que ja tenha data, você não vai adicionar nada!?vou fazer + - do jeito q entendi!!!você pode fazer um botão para pesquisar, ou colocar em onexit do campoprimeiro você vai fazer o select!
- crie uma query, colocando SELECT * FROM TABELA
ae após isso você libera um edit para inserir a data e um botão de inserir!e faz o insert....ou você pode pegar e após o select ja inserir a data de hoje! mas você poderia ser um pouco mais clara para q possamos entender melhor seu problema!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

e você precisa saber mais o que natiii?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu quero saber como fica esse insert...E se fica no code do delphi, ou no SQL...Desculpe, mas estou nesse mundo do delphi a pouco tempo.. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Natiii

isso ae eu faria no delphi natiii...entaum faria uma query para o select !e uma query para o insert!!! eu vou colocar um exemplo porém naum uso ado como você...uso o dbexpress..entaum vai ter algumas diferenças nos nomes ae você transporta para o seu programa...e se surgir dúvida você da um toque!!olha.. você pode ter um combobox com todos os cncs ?(acho q é isso né q você quer fazer uma busca) entaum ae o que você faz...é + - isso:(você só tem q transportar para os componentes q você está utilizando!)
sqlAuxiliar:=TSQLQuery.Create(Self);   with sqlAuxiliar do begin	  SQLConnection:=dmBASE.Conexao;	  SQL.Clear;	  SQL.Add('SELECT EQMOVTP_CODIGO, EQMOVTP_DESCRICAO FROM EQUIPMOV_TIPO');	  Open;		 while not Eof do begin			eqmovtp_codigo:=FindField('EQMOVTP_CODIGO').AsInteger;			eqmovtp_descricao:=FindField('EQMOVTP_DESCRICAO').AsString;			cbTpMovimento.Items.Add(IntToStr(eqmovtp_codigo)+ ' - '+eqmovtp_descricao);			Next;		 end;	  Close;   end;
depois a pessoa vai selecionar a partir do combobox...ae você teria q inserir uma data certo!?ae você pode colocar um campo para entrar com a data, e um botão processar!nesse botão processar você cria uma query fazendo um select
sqlAuxiliar:=TSQLQuery.Create(Self);   with sqlAuxiliar do begin	  SQLConnection:=dmBASE.Conexao;	  SQL.Clear;	  SQL.Add('SELECT COUNT(EQMOVTP_CODIGO) AS REGISTRO FROM EQUIPMOV_TIPO');	  SQL.Add('   WHERE CNC  = :CNC   AND																 '); 	  SQL.Add('			  DATA = :DATA																		 ');		 ParamByName('CNC').ASSTRING:=COMBOBOX.ITEMS(COMBOBOX.[ITEMINDEX]);  		 ParamByName('DATA').ASSTRING:=EDIT1.TEXT;	  Open;		   IF FindField('REGISTRO').AsInteger < 1 then begin				  with sqlAuxiliar do begin					 SQLConnection:=dmBASE.Conexao;					 SQL.Add('INSERT INTO COMPRAFROTA_NSERIE(PES_DOCTO	 , COMP_NOTA_SERIE )');					 SQL.Add('						VALUES(:PES_DOCTO	, :COMP_NOTA_SERIE  )');						  ParamByName('PES_DOCTO').AsString:=EDIT1.TEXT;						  ParamByName('COMP_NOTA_SERIE').AsString:=EDIT2.TEXT;					 ExecSQL();					Free;				  end;		  end;	  Close;   end;
É MAIS OU MENOS ISSO!!ENTAUM você TENTE REDIGIR SEU CÓDIGO E POST AQUI NOVAMENTE Q EU TE AJUDO!!NAUM TE GARANTO HJ, PQ LOGO VOU EMBORA PRA CASA...AE EU QUERO DESCANSAR MINHA CABEÇA HIHIH....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi amigos...

 

Estou tentando ainda resolver esse problema, criei uma query e deixei da seguinte maneira:

 

UPDATE Faturas SET Faturas.DataEmissao = :DataEmi where Faturas.CDC = :CDC;

Não sei se pode-se executar a query na propriedade SQL dessa maneira...

No Access essa query funciona pereitamente, atualiza os valores no cdc indicado, mas no Delphi, está dando o seguinte erro:

ADOQueryDataEmi: CommandText does not return a Result Set.

 

 

E no código do Delphi coloquei:

 

procedure TFormDataEmissao.ButtonInserirDataEmiClick(Sender: TObject);

begin

with AdoQueryDataEmi do

begin

AdoQueryDataEmi.Close;

AdoQueryDataEmi.SQL.Add('Update Faturas SET Faturas.DataEmissao = :DataEmi where Faturas.CDC = :CDCFaturas');

AdoQueryDataEmi.Parameters.ParamByName('DataEmi').Value:= strToDate(EditDataEmi.Text);

AdoQueryDataEmi.Parameters.ParamByName('CDCFaturas').Value:= EditCdcDataEmi.Text;

AdoQueryDataEmi.Open;

end;

end;

 

Não sei o que está errado...

 

Desde já agradeço!

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Natiii

Compartilhar este post


Link para o post
Compartilhar em outros sites

procedure TFormDataEmissao.ButtonInserirDataEmiClick(Sender: TObject);beginwith AdoQueryDataEmi dobeginAdoQueryDataEmi.Close;AdoQueryDataEmi.Clear;AdoQueryDataEmi.SQL.Add('Update Faturas SET Faturas.DataEmissao = :DataEmi where Faturas.CDC = :CDCFaturas');AdoQueryDataEmi.Parameters.ParamByName('DataEmi').Value:= strToDate(EditDataEmi.Text);AdoQueryDataEmi.Parameters.ParamByName('CDCFaturas').Value:= EditCdcDataEmi.Text;AdoQueryDataEmi.Open;end;end;
tente desta forma!!

 

procedure TFormDataEmissao.ButtonInserirDataEmiClick(Sender: TObject);

begin

with AdoQueryDataEmi do

begin

AdoQueryDataEmi.Close;

AdoQueryDataEmi.SQL.Add('Update Faturas SET Faturas.DataEmissao = :DataEmi where Faturas.CDC = :CDCFaturas');

AdoQueryDataEmi.Parameters.ParamByName('DataEmi').Value:= strToDate(EditDataEmi.Text);

AdoQueryDataEmi.Parameters.ParamByName('CDCFaturas').Value:= EditCdcDataEmi.Text;

AdoQueryDataEmi.ExecSQL();

AdoQueryDataEmi.Free;

AdoQueryDataEmi.Open;

end;

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei breakpoint para ver onde ocorria o erro. Quando chega em: AdoQueryDataEmi.ExecSQL dá o erro: Parameter definido incorretamente ou dados incompletos...Pelo que estou vendo aqui não tem parâmetros errados...E quando executo somente a Query na propriede SQL dá o erro: CommandText does not return a result set...

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem um erro aqui ó!

 

 

procedure TFormDataEmissao.ButtonInserirDataEmiClick(Sender: TObject);

begin

with AdoQueryDataEmi do

begin

AdoQueryDataEmi.Close;

AdoQueryDataEmi.SQL.Add('Update Faturas SET Faturas.DataEmissao = :DataEmi where Faturas.CDC = :CDCFaturas');

AdoQueryDataEmi.Parameters.ParamByName('DataEmi').asDate:= strToDate(EditDataEmi.Text);

AdoQueryDataEmi.Parameters.ParamByName('CDCFaturas').asString:= EditCdcDataEmi.Text;

AdoQueryDataEmi.ExecSQL();

AdoQueryDataEmi.Free;

AdoQueryDataEmi.Open;

end;

end;

 

qdo você for passar um parâmetro utilize o tipo de dados referente e naum value! =]

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que fiz um código a pouo tempo que não aceitava de jeito nenhum asString e asDate, nem aparecia quando você dá o ponto (.), só resolvi o problema com value...Mas de qualquer forma tentei colocar agora, mas tambem deu erro:[Error] UnitDataEmissao.pas(39): Undeclared identifier: 'asDate'[Error] UnitDataEmissao.pas(40): Undeclared identifier: 'asString'

Compartilhar este post


Link para o post
Compartilhar em outros sites

troque por este aqui e tente....

 

AdoQueryDataEmi.Parameters.ParamByName('DataEmi').Value:= FormatDateTime('mm/dd/yyyy', StrToDateEditDataEmi.Text));AdoQueryDataEmi.Parameters.ParamByName('CDCFaturas').Value:= EditCdcDataEmi.Text;

Compartilhar este post


Link para o post
Compartilhar em outros sites

troque por este aqui e tente....

AdoQueryDataEmi.Parameters.ParamByName('DataEmi').Value:= FormatDateTime('mm/dd/yyyy', StrToDateEditDataEmi.Text));AdoQueryDataEmi.Parameters.ParamByName('CDCFaturas').Value:= EditCdcDataEmi.Text;
Eu troquei, mas deu o mesmo erro: Parametro definido incorretamente, os campos estão incompletos ou incorretos...O problema também é na propriedade SQL do AdoQuery, pois coloquei o code:Update Faturas SET Faturas.DataEmissao = :DataEmi where Faturas.CDC = :CDCFaturas e dá um erro tbm, que é CommandText dos not return a set result.

Compartilhar este post


Link para o post
Compartilhar em outros sites

natiii eu naum mexo com o ADO, porém eu vou dar uma pesquisada e te passo algum link ou o resultado em cima disso q você me passou ok?! =] fike tranquila q naum vou deixar você de lado naum... =]..só quero saber se o access aceitou o seu código sql...se o seu sql funcionou direitinho!!!se funcionou eu te trago a solução...hj estarei em casa mexendo com o linux configurando algumas coisas e vou pesquisar e te posto alguma coisa ainda hj!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim:

 

procedure TFormDataEmissao.ButtonInserirDataEmiClick(Sender: TObject);beginFormatDateTime('mm/dd/yyyy', StrToDateEditDataEmi.Text)with AdoQueryDataEmi do	begin	AdoQueryDataEmi.Close;	AdoQueryDataEmi.SQL.Add('Update Faturas');	AdoQueryDataEmi.SQL.Add('SET Faturas.DataEmissao = ''' + FormatDateTime('mm/dd/yyyy', StrToDate(EditDataEmi.Text)) + '''');	AdoQueryDataEmi.SQL.Add('where Faturas.CDC = ' + EditCdcDataEmi.Text);	AdoQueryDataEmi.ExecSQL;	end;end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu testei no ACCESS o code: Update Faturas set Faturas.DataEmissao = :DataEmi where Faturas.CDC = :CDC; Funcionou direitinho, Pediu a :DataEmi e o :CDC e foi inserido na Tabela faturas a data! Por isso que n]ao sei o que há de errado... :unsure: Natiii

Compartilhar este post


Link para o post
Compartilhar em outros sites

procedure TFormDataEmissao.ButtonInserirDataEmiClick(Sender: TObject);begin   FormatDateTime('mm/dd/yyyy', StrToDateEditDataEmi.Text)    with AdoQueryDataEmi do begin	   AdoQueryDataEmi.Close;	   AdoQueryDataEmi.SQL.Add('Update Faturas');	   AdoQueryDataEmi.SQL.Add('SET Faturas.DataEmissao = ''' + FormatDateTime('mm/dd/yyyy', StrToDate(EditDataEmi.Text)) + '''');	   AdoQueryDataEmi.SQL.Add('where Faturas.CDC = ' + EditCdcDataEmi.Text);	   AdoQueryDataEmi.ExecSQL;	end;end;

márcio...se você está usando with do naum precisa passar o AdoQuery novamente embaixo =]

 

procedure TFormDataEmissao.ButtonInserirDataEmiClick(Sender: TObject);beginFormatDateTime('mm/dd/yyyy', StrToDateEditDataEmi.Text)   with AdoQueryDataEmi do begin	   Close;	   SQL.Add('Update Faturas');	   SQL.Add('SET Faturas.DataEmissao = ''' + FormatDateTime('mm/dd/yyyy', StrToDate(EditDataEmi.Text)) + '''');	   SQL.Add('where Faturas.CDC = ' + EditCdcDataEmi.Text);	   ExecSQL;   end;end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

só não postei ontem a noite pq naum tava conseguindo entrar no forum!!!tentei por várias vezes mas naum sei o pq naum consegui!esse post encontrei na net... encontrando mais eu vou postar aqui para você se situar!!

Enviada: Qui Jun 03, 2004 12:09 am Assunto: Responder com CitaçãoTParameters é muito chato... No seu caso tem como fugir disso. Se no banco 'varData' não é Date/Time e sim texto, então concatene direto no SQL.constSEU_FORMATO_TEXTO_DATA = 'dd/mm/yyyy';varStrData: string;beginStrData := FormatDateTime(SEU_FORMATO_TEXTO_DATA, dData);ADOQuery1.Close;ADOQuery1.Parameters.Clear;ADOQuery1.ParamCheck := False;ADOQuery1.SQL.Text := 'delete from Notas where data = ' + QuotedStr(StrData) + ' and Cliente is null';ADOQuery1.ExecSQL;Mesmo sendo tipo datetime no banco, dependendo do banco tb tem como fugir do TParameters, mas terá q usar função do banco pra conversão de string pra datetime.

outro

ADOQuery1.Parameters.ParamByName('nome').ParamType := ptInput;Ou, ao invés de usar o nome do parâmetro, use o indice...ADOQuery1.Parameters.Items[0].ParamType := ptInputADOQuery1.Parameters.Items[0].DataType := ftString;ADOQuery1.Parameters.Items[0].Value := 'Gerfferson Santos';

Compartilhar este post


Link para o post
Compartilhar em outros sites

procedure TFormDataEmissao.ButtonInserirDataEmiClick(Sender: TObject);begin   FormatDateTime('mm/dd/yyyy', StrToDateEditDataEmi.Text)    with AdoQueryDataEmi do begin	   AdoQueryDataEmi.Close;	   AdoQueryDataEmi.SQL.Add('Update Faturas');	   AdoQueryDataEmi.SQL.Add('SET Faturas.DataEmissao = ''' + FormatDateTime('mm/dd/yyyy', StrToDate(EditDataEmi.Text)) + '''');	   AdoQueryDataEmi.SQL.Add('where Faturas.CDC = ' + EditCdcDataEmi.Text);	   AdoQueryDataEmi.ExecSQL;	end;end;
márcio...se você está usando with do naum precisa passar o AdoQuery novamente embaixo =]
procedure TFormDataEmissao.ButtonInserirDataEmiClick(Sender: TObject);beginFormatDateTime('mm/dd/yyyy', StrToDateEditDataEmi.Text)   with AdoQueryDataEmi do begin	   Close;	   SQL.Add('Update Faturas');	   SQL.Add('SET Faturas.DataEmissao = ''' + FormatDateTime('mm/dd/yyyy', StrToDate(EditDataEmi.Text)) + '''');	   SQL.Add('where Faturas.CDC = ' + EditCdcDataEmi.Text);	   ExecSQL;   end;end;
Ah sim, sei sim... :PFoi na pressa mesmo... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.