Ir para conteúdo

POWERED BY:

Arquivado

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

sanoboy

Erro estranho!

Recommended Posts

Olá pessoal, sou novato aqui no forum!

Gostaria de saber a opnião de vcs, sobre um erro que esta dando!

Tenho uma formulario, neste formulario tem um grid, no evento onCellClick do grid tem o seguinte codigo!

 

procedure TFormvisualizaragenda.DBGridmostrardataCellClick(

Column: TColumn);

begin

try

x := tela_dados_agenda.ADOQueryagenda.FieldValues ['cod'];

maskeditdataagenda.Text := FormatDateTime('dd/mm/yyyy',tela_dados_agenda.ADOQueryagenda.FieldValues ['data_atendimento']);

maskedithorario.Text := FormatDateTime('hh:mm',tela_dados_agenda.ADOQueryagenda.FieldValues ['HORARIO']);

comboboxsetor.KeyValue := tela_dados_agenda.ADOQueryagenda.FieldValues ['setor'];

comboboxtecnico.KeyValue := tela_dados_agenda.ADOQueryagenda.FieldValues ['tecnico'];

memoanotacaoatendimento.Text := tela_dados_agenda.ADOQueryagenda.FieldValues ['anotacoes'];

except

MessageDlg ('Aluno não possui nada agendado!',mtInformation,[mbOk], 0);

end;

end;

 

Esse procedimento serve para jogar os dados da Grid para os outro campos! Mas acontece o seguinte erro.

 

"Operação de várias etapas gerou erro. Verifique cada valor de estatus." Ae logo em seguinda aponta pra seguinte linha do codigo"

 

-->>>maskedithorario.Text := FormatDateTime('hh:mm',tela_dados_agenda.ADOQueryagenda.FieldValues ['HORARIO']);

 

Este é o cogido do banco de dados da seguinte tabela

 

CREATE TABLE "AGENDA"

(

"COD" INTEGER NOT NULL,

"DATA_ATENDIMENTO" DATE NOT NULL,

"SETOR" INTEGER,

"TECNICO" INTEGER,

"ALUNO_MATRICULA" INTEGER NOT NULL,

"ALUNO_PRONTUARIO" VARCHAR(10) NOT NULL,

"ANOTACOES" BLOB SUB_TYPE TEXT SEGMENT SIZE 80,

"HORARIO" TIME,

CONSTRAINT "PK_AGENDA" PRIMARY KEY ("COD")

);

ALTER TABLE "AGENDA" ADD CONSTRAINT "FK_AGENDA_1" FOREIGN KEY ("SETOR") REFERENCES SETORES ("COD") ON UPDATE CASCADE ON DELETE SET NULL;

ALTER TABLE "AGENDA" ADD CONSTRAINT "FK_AGENDA_2" FOREIGN KEY ("TECNICO") REFERENCES TECNICOS_E_FUNCIONARIOS ("COD") ON UPDATE CASCADE ON DELETE SET NULL;

ALTER TABLE "AGENDA" ADD CONSTRAINT "FK_AGENDA_3" FOREIGN KEY ("ALUNO_PRONTUARIO", "ALUNO_MATRICULA") REFERENCES ALUNO ("PRONTUARIO", "MATRICULA") ON UPDATE CASCADE ON DELETE CASCADE;

SET TERM ^ ;

 

Depois que ocorre esse problema, não consigo fazer o Select no Interbase.

 

Para inserir dados nessa tabelas, efetua-se esse procedimento abaixo.

 

procedure TFormagenda.BitBtnadicionaragendaClick(Sender: TObject);

begin

//procedimento do botão adicionar

try

if(labelaluno.Caption = '') then

begin

MessageDlg ('Selecione um aluno para adicionar na agenda!',mtInformation,[mbOk], 0);

end

else if(comboboxsetor.Text = '') then

begin

MessageDlg ('Necessário preencher campo setor!',mtInformation,[mbOk], 0);

end

else if(comboboxtecnico.Text = '') then

begin

MessageDlg ('Necessário preencher campo tecnico!',mtInformation,[mbOk], 0);

end

else if (maskeditdataagenda.Text = ' / / ') then

begin

MessageDlg ('Necessário preencher campo Data!',mtInformation,[mbOk], 0);

end

else if(maskedithorario.Text = ' : ') then

begin

MessageDlg ('Necessário preencher campo horário!',mtInformation,[mbOk], 0);

end

else

begin

tela_dados.bancodedadosapae.BeginTrans;

tela_dados_agenda.ADOCommandinserircompromisso.Parameters.ParamValues ['data_atendimento'] := StrToDate(maskeditdataagenda.Text);

tela_dados_agenda.ADOCommandinserircompromisso.Parameters.ParamValues ['horario'] := StrToTime(maskedithorario.Text);

tela_dados_agenda.ADOCommandinserircompromisso.Parameters.ParamValues ['setor'] := comboboxsetor.KeyValue;

tela_dados_agenda.ADOCommandinserircompromisso.Parameters.ParamValues ['tecnico'] := comboboxtecnico.KeyValue;

tela_dados_agenda.ADOCommandinserircompromisso.Parameters.ParamValues ['anotacoes'] := memoanotacaoatendimento.Text;

tela_dados_agenda.ADOCommandinserircompromisso.Parameters.ParamValues ['aluno_prontuario'] := editprontuario.Text;

tela_dados_agenda.ADOCommandinserircompromisso.Parameters.ParamValues ['aluno_matricula'] := editmatricula.Text;

tela_dados_agenda.ADOCommandinserircompromisso.Execute;

tela_dados.bancodedadosapae.CommitTrans;

maskeditdataagenda.Clear;

comboboxsetor.KeyValue := Null;

memoanotacaoatendimento.Clear;

maskedithorario.Clear;

comboboxtecnico.KeyValue := Null;

maskeditdataagenda.SetFocus;

MessageDlg ('Compromisso agendado!',mtInformation,[mbOk], 0);

end;

except

MessageDlg ('Erro, proceda a correção no(s) dado(s)!',mtInformation,[mbOk], 0);

tela_dados.bancodedadosapae.RollbackTrans;

end;

end;

 

Não consigo indentificar a causa desse erro, gostaria da ajuda de vcs!!

Mto obrigado!!

 

Hélio!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sua intenção é quando selecionar ou clicar em um item do DBGrid as informações das linhas preencham alguns campos na tela ?

è sim!!! Qdo clico em uma celula do grid, os dados preechem campos na tela!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faço assim(com listview):

var i: Integer; x: string;
begin
   i := List.ItemIndex;
   if i >= 0 then
	  begin
	  pnTop.Caption := 'Alterar usuário';
	  btnCad.Caption := 'A&ltera';
	  x := list.Items[i].SubItems.Strings[0];

	  rOpenRsQuery('SELECT * FROM tb_users WHERE cd_login = "' + x + '"');
	  txtNome.Text	:=		 fQrStr('nm_user'	);
	  txtLogin.Text   :=		 fQrStr('cd_login'  );
	  txtLogin.ReadOnly := True;
	  txtSenha.Text   :=		 fQrStr('ds_senha'  );
	  Check  .Checked := fDbToBool(fQrStr('fl_senha' ));
	  pnCad.Show;
	  pnLoc.Enabled := False;
	  rCloseRsQuery();
	  rOpenRsQuery('SELECT * FROM auditoria WHERE MID(login,1,40) = "' +fRPad(txtLogin.Text, 40, '_')+'"');
	  RichEdit.Clear;
	  while not(fQrEof) do
		 begin
		 RichEdit.Lines.Add(fFormat(Copy(fQrStr('login'), 41, 8), rrDbDate) + ' ás ' +
		   Copy(fQrStr('login'), 49, 2) + ':' + Copy(fQrStr('login'), 51, 2) +
			':' + Copy(fQrStr('login'), 53, 2) + ': ' + fQrStr('desc'));
		 rQrNext();
		 end;
	  rCloseRsQuery();
	  btnDel.Enabled := UpperCase(txtLogin.Text) <> wkUser;
	  end;

e para monta:

var
 lvNm, lvLogin: string;
begin
   List.Clear;
   rOpenRsQuery('SELECT * FROM tb_users');
   while not(fQrEof()) do
	  begin
	  lvNm	:= fQrStr('nm_user');
	  lvLogin := fQrStr('cd_Login');
	  rAddItem(list, [lvNm, lvLogin, lvLogin]);
	  rQrNext();
	  end;
   rCloseRsQuery();

//------------------------------------------------------------------------------
procedure rAddItem(var pLv: TListView; pArr: array of string);
var
  lvItem: TListItem;
  I, lvMax: integer;
begin
   lvItem			:= pLv.Items.Add;
   lvItem.Caption	:= pArr[0];
   lvMax := High(pArr);
   for I := 1 to lvMax do
	  lvItem.SubItems.Add(pArr[I]);
   pLv.AllocBy := pLv.Items.Count;
end;

 

rOpenRsQuery: Abre

rCloseRsQuery: Fecha

fqrstr: fiedy by name

rqrnext next

fqreof tambem

 

Num vo passa o codigo que eu fiz de mão bejada. então faça pelo menos as rotinas...

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.