Consulta está certa mas não retorna.
25/06/2008
0
Estou montando um formulario que eu marco as aulas e ai na consulta eu mostro em cada coluna quais os alunos que estão marcados nos horarios, mas o que acontece que pelo que eu já fiz tá certo mas ele nao me mostra nada, mas o problema está no procedimento consultagendamento.
foi declarado as variaveis
....
Criaçao dos Edits:
aqui eu busco os horarios dos instrutores e jogo nos captions dos labels:
e esse é o meu problema que não está dando certo:
aqui eu consulto na tabela teoricas quais alunos estão marcados nos horarios, mas ele não me retorna
nada.
alguém poderia me ajudar ???
foi declarado as variaveis
....
public { Public declarations } end; var FrmTeoricas: TFrmTeoricas; LbHorIni, LbHorFin : TpsvBorderLabel; CA, CAC, MA, MAC, HIni, HFin : Integer; CodAlu, Materias : TEdit; HorIni, HorFin : String; // recebe os horarios por instrutor da tabela Aulas : Integer; // recebe a quantidade de aulas por instrutor da tabela Conta, ContaM : Integer; .....
Criaçao dos Edits:
procedure TFrmTeoricas.FormCreate(Sender: TObject); var soma, a : Integer; Alunos : Integer; begin with QryAlunos do begin close; sql.clear; sql.add(´select * from Configuracao´); open; end; Alunos := QryAlunos.FieldByName(´TOT_ALU_TEORICAS´).AsInteger; TxtData.Date := date (); A := 0; // Criando total de alunos for CA :=1 to 16 do // fileira de edits for CAC := 1 to Alunos do // criando colunas de codigos dos alunos begin A := A + 1; soma := A; CodAlu := TEdit.Create(nil); CodAlu.Name := ´Alu´+ IntToStr(soma); codAlu.Tag := ca; CodAlu.Left := 5+(CAC*82); CodAlu.Height := 20; CodAlu.Width := 55; CodAlu.AutoSize := false; CodAlu.Font.Size := 8; CodAlu.Text := ´´; CodAlu.top := -19+(CA*20); CodAlu.Parent := Grade; CodAlu.Cursor := crCross; CodAlu.OnDblClick := MarcaAulas; CodAlu.OnMouseMove:= MudarCursor; end; // Criando totais de materias A := 0; for MA :=1 to 16 do // fileira de edits for MAC := 1 to Alunos do // criando colunas de materias begin A := A + 1; soma := A; Materias := TEdit.Create(nil); Materias.Name := ´Mat´+ IntToStr(soma); Materias.Left := 60+(MAC*82); Materias.Height := 20; Materias.Width := 24; Materias.AutoSize := false; Materias.Font.Size := 8; Materias.Text := ´´; Materias.top := -19+(MA*20); Materias.Parent := Grade; Materias.Cursor := crCross; Materias.OnMouseMove:= MudarCursor; Materias.OnDblClick := teste; end; end;
aqui eu busco os horarios dos instrutores e jogo nos captions dos labels:
procedure TFrmTeoricas.txtcodinsExit(Sender: TObject); begin ConsultaRegistros (´Instrutores´, ´Codigo, Nome´, ´Codigo=´ + TxtCodIns.Text); TxtCodIns.Text := LeDados (´Codigo´); TxtNomIns.Text := LeDados (´Nome´); TxtCodIns.Text := StrZero (StrToFloat(TxtCodIns.Text), 3); TxtCod.SetFocus; SpbAluLoc.Enabled := True; TxtCodMat.ReadOnly := False; SpbAnt.Enabled := True; SpbPro.Enabled := True; Conta := 1; With DtmIza.QryIza do begin close; sql.Clear; sql.Add(´Select * From HorariosTeoricas where Instrutor = :Inst order by horarioInicial´); ParamByName(´Inst´).AsString := txtcodins.Text; open; end; while ( not dtmIza.qryiza.EOF ) do begin TpsvBorderLabel( FindComponent( ´Hor´ + IntToStr( Conta ) ) ).Caption := FormatDateTime(´hh:nn´, DtmIza.QryIza.FieldByName(´HorarioInicial´).AsDateTime); TpsvBorderLabel( FindComponent( ´Hora´ + IntToStr( Conta ) ) ).Caption := FormatDateTime(´hh:nn´, DtmIza.QryIza.FieldByName(´HorarioFinal´).AsDateTime); conta :=conta+1; dtmIza.qryiza.Next; end; ConsultaAgendamento; end;
e esse é o meu problema que não está dando certo:
aqui eu consulto na tabela teoricas quais alunos estão marcados nos horarios, mas ele não me retorna
nada.
procedure TFrmTeoricas.ConsultaAgendamento; begin ContaM := 1; With DtmIza.QryIza do begin close; sql.Clear; sql.Add(´Select * From Teoricas where Instrutor = :Inst and Data = :Dat´); ParamByName(´Inst´).AsString := txtcodins.Text; ParamByName(´Dat´).AsDate := txtData.date; open; end; while ( not dtmIza.qryiza.EOF ) do begin if DtmIza.QryIza.FieldByName(´Bloqueado´).AsString = ´S´ then begin TEdit( FindComponent( ´Alu´ + IntToStr( ContaM ) ) ).Text := ´**********´; end else begin TEdit( FindComponent( ´Alu´ + IntToStr( ContaM ) ) ).Text := DtmIza.QryIza.FieldByName(´Aluno´).asstring; TEdit( FindComponent( ´Mat´ + IntToStr( ContaM ) ) ).Text := DtmIza.QryIza.FieldByName(´Materia´).asstring; end; {else begin TEdit( FindComponent( ´Alu´ + IntToStr( ContaM ) ) ).Text := ´´; end; } contaM:=contaM+1; dtmIza.qryiza.Next; end; end;
alguém poderia me ajudar ???
Robinhocne
Curtir tópico
+ 0
Responder
Posts
25/06/2008
Robinhocne
fiz um debug e ai ele me retorna os dados certos mas o problema está aqui,:
mas o que será ?
TEdit( FindComponent( ´Alu´ + IntToStr( ContaM ) ) ).Text
mas o que será ?
Responder
26/06/2008
Robinhocne
Caraca, era isso mesmo, troquei o nil por self e funcionou mais ou menos certo...
mostra ai ele mostrou nos texts dos esdits, mas só está mostrando.
ficou assim:
e ai no procedimento de consulta agendamento:
ficou da mesma maneira:
[b:c8ad93585f]Mas agora ele só não está mostrando, tipo assim
se eu marquei os horarios de 08:00, 09:00, 11:00 etc, ai nos edits ele mostra tudo na fileira das 08:00 hs
mas tá assim os Edits são criados comecando um na frente do outro então ele cria no horario das:
08:00 hs Alu1, Alu2, Alu3, Alu4, Alu5, Alu6, Alu7....Alu10 depois ele pula para a linha de baixo que é o horario das:
09:00 hs Alu11, Alu12, Alu13, Alu14, Alu15, Alu16, Alu17....Alu20 e ele vai criando dependendo de (x) edtis que o usuario vai querer que crie um na frente do outro e sempre vai ser 16 edits um em baixo do outro tipo assim:
1 - 08:00 Alu1, Alu2, Alu3, Alu4, Alu5, Alu6, Alu7....Alu10
2 - 09:00 Alu11, Alu12, Alu13, Alu14, Alu15, Alu16, Alu17....alu10
3 - 10:00 Alu21, Alu22, Alu23, Alu24, Alu25, Alu26, Alu27....alu20
4 - 11:00 Alu31, Alu32, Alu33, Alu34, Alu35, Alu36, Alu37....alu30
...
16 - 23:00 Alu171, Alu172, alu173 Alu174, Alu175, Alu176, Alu177....alu180
ai na consulta para mostrar os agendamento, está assim contando
como ele cria um atras do outro e depois vai pulando em fileira ele mostra tudo bagunçado tipo se os horairos estão marcados 08:00, 10:00 ele só mostra na primeira por causa da contagem dos nomes dos edits.
e agora como dá para deixar essa primeira fileira como das 08:00 a segunda das 09:00 mas sabendo que o total de fileiras é (x) ?
[/b:c8ad93585f]
mostra ai ele mostrou nos texts dos esdits, mas só está mostrando.
ficou assim:
procedure TFrmTeoricas.FormCreate(Sender: TObject); var soma, a : Integer; Alunos : Integer; begin with QryAlunos do begin close; sql.clear; sql.add(´select * from Configuracao´); open; end; Alunos := QryAlunos.FieldByName(´TOT_ALU_TEORICAS´).AsInteger; TxtData.Date := date (); A := 0; // Criando total de alunos for CA :=1 to 16 do for CAC := 1 to Alunos do // criando colunas begin A := A + 1; soma := A; CodAlu := TEdit.Create(Self); with CodAlu do begin Name := ´Alu´+ IntToStr(soma); Tag := ca; Left := 5+(CAC*82); Height := 20; Width := 55; AutoSize := false; Font.Size := 8; Text := ´´; top := -19+(CA*20); Parent := Grade; Cursor := crCross; OnDblClick := MarcaAulas; OnMouseMove:= MudarCursor; OnKeyDown := BloqueioDesbloqueio; end; end; A := 0; // Criando totais de materias for MA :=1 to 16 do for MAC := 1 to Alunos do // criando colunas de materias begin A := A + 1; soma := A; Materias := TEdit.Create(Self); with Materias do begin Name := ´Mat´+ IntToStr(soma);; Left := 60+(MAC*82); Height := 20; Width := 24; AutoSize := false; Font.Size := 8; Text := ´´; top := -19+(MA*20); Parent := Grade; Cursor := crCross; OnMouseMove:= MudarCursor; end; end; end;
e ai no procedimento de consulta agendamento:
ficou da mesma maneira:
procedure TFrmTeoricas.ConsultaAgendamento; begin ContaM := 1; With DtmIza.QryIza do begin close; sql.Clear; sql.Add(´Select * From Teoricas where Instrutor = :Inst and Data = :Dat´); ParamByName(´Inst´).AsString := txtcodins.Text; ParamByName(´Dat´).AsDate := txtData.date; open; end; while ( not dtmIza.qryiza.EOF ) do begin if DtmIza.QryIza.FieldByName(´Bloqueado´).AsString = ´S´ then begin TEdit( FindComponent( ´Alu´ + IntToStr( ContaM ) ) ).Text := ´**********´; end else begin TEdit( FindComponent( ´Alu´ + IntToStr( ContaM ) ) ).Text := StrZero (DtmIza.QryIza.FieldByName(´Aluno´).AsInteger, 6); TEdit( FindComponent( ´Mat´ + IntToStr( ContaM ) ) ).Text := DtmIza.QryIza.FieldByName(´Sigla´).asstring; end; {else begin TEdit( FindComponent( ´Alu´ + IntToStr( ContaM ) ) ).Text := ´´; end; } contaM:=contaM+1; dtmIza.qryiza.Next; end; end;
[b:c8ad93585f]Mas agora ele só não está mostrando, tipo assim
se eu marquei os horarios de 08:00, 09:00, 11:00 etc, ai nos edits ele mostra tudo na fileira das 08:00 hs
mas tá assim os Edits são criados comecando um na frente do outro então ele cria no horario das:
08:00 hs Alu1, Alu2, Alu3, Alu4, Alu5, Alu6, Alu7....Alu10 depois ele pula para a linha de baixo que é o horario das:
09:00 hs Alu11, Alu12, Alu13, Alu14, Alu15, Alu16, Alu17....Alu20 e ele vai criando dependendo de (x) edtis que o usuario vai querer que crie um na frente do outro e sempre vai ser 16 edits um em baixo do outro tipo assim:
1 - 08:00 Alu1, Alu2, Alu3, Alu4, Alu5, Alu6, Alu7....Alu10
2 - 09:00 Alu11, Alu12, Alu13, Alu14, Alu15, Alu16, Alu17....alu10
3 - 10:00 Alu21, Alu22, Alu23, Alu24, Alu25, Alu26, Alu27....alu20
4 - 11:00 Alu31, Alu32, Alu33, Alu34, Alu35, Alu36, Alu37....alu30
...
16 - 23:00 Alu171, Alu172, alu173 Alu174, Alu175, Alu176, Alu177....alu180
ai na consulta para mostrar os agendamento, está assim contando
ContaM := 1; With DtmIza.QryIza do begin close; sql.Clear; sql.Add(´Select * From Teoricas where Instrutor = :Inst and Data = :Dat´); ParamByName(´Inst´).AsString := txtcodins.Text; ParamByName(´Dat´).AsDate := txtData.date; open; end; while ( not dtmIza.qryiza.EOF ) do begin if DtmIza.QryIza.FieldByName(´Bloqueado´).AsString = ´S´ then begin TEdit( FindComponent( ´Alu´ + IntToStr( ContaM ) ) ).Text := ´**********´; end else begin TEdit( FindComponent( ´Alu´ + IntToStr( ContaM ) ) ).Text := StrZero (DtmIza.QryIza.FieldByName(´Aluno´).AsInteger, 6); TEdit( FindComponent( ´Mat´ + IntToStr( ContaM ) ) ).Text := DtmIza.QryIza.FieldByName(´Sigla´).asstring; end; {else begin TEdit( FindComponent( ´Alu´ + IntToStr( ContaM ) ) ).Text := ´´; end; } contaM:=contaM+1; dtmIza.qryiza.Next; end;
como ele cria um atras do outro e depois vai pulando em fileira ele mostra tudo bagunçado tipo se os horairos estão marcados 08:00, 10:00 ele só mostra na primeira por causa da contagem dos nomes dos edits.
e agora como dá para deixar essa primeira fileira como das 08:00 a segunda das 09:00 mas sabendo que o total de fileiras é (x) ?
[/b:c8ad93585f]
Responder
Clique aqui para fazer login e interagir na Comunidade :)