Fórum Consulta SQL #278943
26/04/2005
0
Abraços...
segue o codigo abaixo:
----------------------------------------------
procedure TEmprestimo.Btn_SalvarClick(Sender: TObject);
var
a,b,c,d : String;
// variaveis responsaveis pela soma da data
e,m,y : word;
i : byte;
Data : TDateTime;
begin
// se o emprestimo for para aluno
if combo_tipo.Text = ´ALUNO´ then
begin
//select count( * ) from TABELA_emprestimo where Codigo_Aluno = edit_codigo.text
// seleciona todos os emprestimos que aquele aluno tem
if Edit_codigoAL.Text <>´´ Then
begin
Dm.Tbl_Emprestimos.Close;
Dm.Tbl_Emprestimos.SelectSQL.Clear;
a:=´select * From Emprestimo ´;
b:=´Where COD_ALUNO =´+Edit_codigoAL.Text;
Dm.Tbl_Emprestimos.SelectSQL.Add(a+b);
Dm.Tbl_Emprestimos.Open;
end;
// Verifica o tipo de consulta (AQUI TA DANDO ERRO!!!)
if Combo_TipoConsulta.Text <>´´ Then
begin
Dm.Tbl_TipoConsulta.Close;
Dm.Tbl_TipoConsulta.SelectSQL.Clear;
c:=´select * from TIPO_CONSULTA ´;
d:=´Where TIPO =´+Combo_TipoConsulta.Text;
Dm.Tbl_TipoConsulta.SelectSQL.Add(c+d);
Dm.Tbl_TipoConsulta.Open;
end;
if Dm.Tbl_Emprestimos.RecordCount >= Dm.Tbl_TipoConsultaMAX_RESERVA_ALUNO.AsInteger then
begin
ShowMessage(´Aluno ja possui o limite ou mais do que o permitido´);
end
else
begin
{AQUI TAMBEM TA DANDO ERRO}
//-----------------------------------------------------
if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Dia(s)´ then
begin
//Rotina que gera a data da devolução.
for i := 1 to 1 do begin
Data := Date + (Dm.Tbl_TipoConsultaTEMPO.AsInteger * i);
DecodeDate(Data,y,m,e);
Edit_DataDev.Text := DateToStr(Data);
end;
end;
//-----------------------------------------------------
if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Semana(s)´ then
begin
//Rotina que gera a data da devolução.
for i := 1 to 7 do begin
Data := Date + (Dm.Tbl_TipoConsultaTEMPO.AsInteger * i);
DecodeDate(Data,y,m,e);
Edit_DataDev.Text := DateToStr(Data);
end;
end;
//-----------------------------------------------------
if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Hora(s)´ then
begin
Edit_DataDev.Text := FormatDateTime(´dd"/"mm"/"yyy´,Date);
end;
//-----------------------------------------------------
if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Minuto(s)´ then
begin
Edit_DataDev.Text := FormatDateTime(´dd"/"mm"/"yyy´,Date);
end;
//-----------------------------------------------------
//ShowMessage(´Aluno está OK´);
// try
If Not(DM.Tr_Emprestimos.InTransaction) Then
DM.Tr_Emprestimos.StartTransaction;
Dm.Tbl_Emprestimos.Open;
Dm.Tbl_Emprestimos.insert;
Dm.Tbl_Emprestimos.FieldByName(´Codigo´).AsInteger := StrToInt(Edit_Codigo.Text);
Dm.Tbl_Emprestimos.FieldByName(´COD_ALUNO´).AsInteger := StrToInt(Edit_CodigoAl.Text);
Dm.Tbl_Emprestimos.FieldByName(´COD_LIVRO´).AsInteger := StrToInt(Edit_CodigoLivro.Text);
Dm.Tbl_Emprestimos.FieldByName(´TIPO_EMPR´).AsString := Emprestimo.Combo_Tipo.text;
Dm.Tbl_Emprestimos.FieldByName(´TIPO_CONS´).AsString := Emprestimo.Combo_TipoConsulta.text;
Dm.Tbl_Emprestimos.FieldByName(´DATA_EMPR´).AsString := Emprestimo.Edit_DataEmpr.text;
Dm.Tbl_Emprestimos.FieldByName(´DATA_DEV´).AsString := Emprestimo.Edit_DataDev.text;
Dm.Tbl_Emprestimos.post;
Dm.Tbl_Emprestimos.ApplyUpdates;
Dm.Tbl_Emprestimos.Close;
ShowMessage(´Empréstimo Efetuado Com Sucesso.´);
//limpa_Edit;
Btn_Salvar.Enabled := False;
Btn_Editar.Enabled := False;
Btn_Baixar.Enabled := False;
Btn_CancelarBaixa.Enabled := False;
Btn_B1.Enabled := False;
Btn_B2.Enabled := False;
Btn_Up.Enabled := true;
Btn_Down.Enabled := true;
Edit_Disable;
// except on exception do
// begin
// ShowMessage(´Operação ilegal, verifique se nao há algum erro, ou se o Empréstimo ja não existe e tente novamente.´);
// Dm.Tbl_Emprestimos.Cancel;
// Dm.Tbl_Emprestimos.Close;
// end;
// end;
end;
end;
end;Mahdak
Curtir tópico
+ 0Posts
26/04/2005
Rjun
Gostei + 0
26/04/2005
Juliopedroni
//Erro
// Verifica o tipo de consulta (AQUI TA DANDO ERRO!!!)
if Combo_TipoConsulta.Text <>´´ Then
begin
Dm.Tbl_TipoConsulta.Close;
Dm.Tbl_TipoConsulta.SelectSQL.Clear;
c:=´select * from TIPO_CONSULTA ´;
d:=´Where TIPO =´+Combo_TipoConsulta.Text;
Dm.Tbl_TipoConsulta.SelectSQL.Add(c+d);
Dm.Tbl_TipoConsulta.Open;
end;
//Tente
//Ao invés de usar variáveis pra montar o comando sql, por que você não pode montar ele direto ?
//Verifique se a coluna ´TIPO´ da tabela ´TIPO_CONSULTA´ é do tipo Varchar.
if Combo_TipoConsulta.Text <>´´ Then
begin
Dm.Tbl_TipoConsulta.Close;
Dm.Tbl_TipoConsulta.SelectSQL.Clear;
Dm.Tbl_TipoConsulta.SelectSQL.Add(´select * from TIPO_CONSULTA Where TIPO = ´ + Trim(Combo_TipoConsulta.Text));
Dm.Tbl_TipoConsulta.Open;
end;
===========================================================
//Erro
//Repare que no primeiro for que aparece abaixo, ele é de 1 até 1, por q ? (Se está correto, apenas mande multiplicar por 1 nas linhas abaixo...)
//Por que a linha ´DecodeDate(Data,y,m,e)´ se você nunca usa estas variáveis ?
//Nunca vi este tipo de fomatação de datas ´FormatDateTime(´dd´/´mm´/´yyy´,Date);´ ... tente usar assim ... ´FormatDateTime(´dd/mm/yyyy´,Date);´ por que o ano com 3 dígitos apenas ?
//-----------------------------------------------------
if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Dia(s)´ then
begin
//Rotina que gera a data da devolução.
for i := 1 to 1 do begin
Data := Date + (Dm.Tbl_TipoConsultaTEMPO.AsInteger * i);
DecodeDate(Data,y,m,e);
Edit_DataDev.Text := DateToStr(Data);
end;
end;
//-----------------------------------------------------
if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Semana(s)´ then
begin
//Rotina que gera a data da devolução.
for i := 1 to 7 do begin
Data := Date + (Dm.Tbl_TipoConsultaTEMPO.AsInteger * i);
DecodeDate(Data,y,m,e);
Edit_DataDev.Text := DateToStr(Data);
end;
end;
//-----------------------------------------------------
if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Hora(s)´ then
begin
Edit_DataDev.Text := FormatDateTime(´dd´/´mm´/´yyy´,Date);
end;
//-----------------------------------------------------
if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Minuto(s)´ then
begin
Edit_DataDev.Text := FormatDateTime(´dd´/´mm´/´yyy´,Date);
end;
//-----------------------------------------------------
===============================
===============================
===============================
Veja se os erros pararam e me avise ...
Falow...
Gostei + 0
26/04/2005
Mahdak
Estou colando o código modificado pra voce ver:
---------------------------------------------------------
procedure TEmprestimo.Btn_SalvarClick(Sender: TObject);
var
// variaveis responsaveis pela soma da data
i : byte;
Data : TDateTime;
begin
// se o emprestimo for para aluno
if combo_tipo.Text = ´ALUNO´ then
begin
//select count( * ) from TABELA_emprestimo where Codigo_Aluno = edit_codigo.text
// seleciona todos os emprestimos que aquele aluno tem
if Edit_codigoAL.Text <>´´ Then
begin
Dm.Tbl_Emprestimos.Close;
Dm.Tbl_Emprestimos.SelectSQL.Clear;
Dm.Tbl_TipoConsulta.SelectSQL.Add(´select * From Emprestimo Where COD_ALUNO = ´ + Trim(Edit_codigoAL.Text));
Dm.Tbl_Emprestimos.Open;
end;
// Verifica o tipo de consulta (AQUI TAVA DANDO ERRO!!!)
if Combo_TipoConsulta.Text <>´´ Then
begin
Dm.Tbl_TipoConsulta.Close;
Dm.Tbl_TipoConsulta.SelectSQL.Clear;
Dm.Tbl_TipoConsulta.SelectSQL.Add(´select * from TIPO_CONSULTA Where TIPO = ´ + Trim(Combo_TipoConsulta.Text));
Dm.Tbl_TipoConsulta.Open;
end;
if Dm.Tbl_Emprestimos.RecordCount >= Dm.Tbl_TipoConsultaMAX_RESERVA_ALUNO.AsInteger then
begin
ShowMessage(´Aluno ja possui o limite ou mais do que o permitido´);
end
else
begin
{AQUI TAMBEM TAVA DANDO ERRO}
//-----------------------------------------------------
if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Dia(s)´ then
begin
//Rotina que gera a data da devolução.
for i := 1 to 1 do begin
Data := Date + (Dm.Tbl_TipoConsultaTEMPO.AsInteger * i);
Edit_DataDev.Text := DateToStr(Data);
end;
end;
//-----------------------------------------------------
if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Semana(s)´ then
begin
//Rotina que gera a data da devolução.
for i := 1 to 1 do begin
Data := Date + (Dm.Tbl_TipoConsultaTEMPO.AsInteger * i * 7);
Edit_DataDev.Text := DateToStr(Data);
end;
end;
//-----------------------------------------------------
if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Hora(s)´ then
begin
Edit_DataDev.Text := FormatDateTime(´dd/mm/yyyy´,Date);
end;
//-----------------------------------------------------
if Dm.Tbl_TipoConsultaUNIDADE.AsString = ´Minuto(s)´ then
begin
Edit_DataDev.Text := FormatDateTime(´dd/mm/yyyy´,Date);
end;
//-----------------------------------------------------
//ShowMessage(´Aluno está OK´);
try
If Not(DM.Tr_Emprestimos.InTransaction) Then
DM.Tr_Emprestimos.StartTransaction;
Dm.Tbl_Emprestimos.Open;
Dm.Tbl_Emprestimos.insert;
Dm.Tbl_Emprestimos.FieldByName(´Codigo´).AsInteger := StrToInt(Edit_Codigo.Text);
Dm.Tbl_Emprestimos.FieldByName(´COD_ALUNO´).AsInteger := StrToInt(Edit_CodigoAl.Text);
Dm.Tbl_Emprestimos.FieldByName(´COD_LIVRO´).AsInteger := StrToInt(Edit_CodigoLivro.Text);
Dm.Tbl_Emprestimos.FieldByName(´TIPO_EMPR´).AsString := Emprestimo.Combo_Tipo.text;
Dm.Tbl_Emprestimos.FieldByName(´TIPO_CONS´).AsString := Emprestimo.Combo_TipoConsulta.text;
Dm.Tbl_Emprestimos.FieldByName(´DATA_EMPR´).AsString := Emprestimo.Edit_DataEmpr.text;
Dm.Tbl_Emprestimos.FieldByName(´DATA_DEV´).AsString := Emprestimo.Edit_DataDev.text;
Dm.Tbl_Emprestimos.post;
Dm.Tbl_Emprestimos.ApplyUpdates;
Dm.Tbl_Emprestimos.Close;
ShowMessage(´Empréstimo Efetuado Com Sucesso.´);
//limpa_Edit;
Btn_Salvar.Enabled := False;
Btn_Editar.Enabled := False;
Btn_Baixar.Enabled := False;
Btn_CancelarBaixa.Enabled := False;
Btn_B1.Enabled := False;
Btn_B2.Enabled := False;
Btn_Up.Enabled := true;
Btn_Down.Enabled := true;
Edit_Disable;
except on exception do
begin
ShowMessage(´Operação ilegal, verifique se nao há algum erro, ou se o Empréstimo ja não existe e tente novamente.´);
Dm.Tbl_Emprestimos.Cancel;
Dm.Tbl_Emprestimos.Close;
end;
end;
end;
end;
end;
Gostei + 0
26/04/2005
Rjun
Você esta dando um Clear em tbl_Emprestimo mas esta dando um Add em tbl_TipoConsulta.
Gostei + 0
26/04/2005
Mahdak
ta dando o mesmo erro ainda, a na consulta SQL da tabela TipoConsulta. o campo aquele que vc pediu para verificar eh varchar, e o erro é o seguinte:
[ Dinamic SQL error SQL error code = -206 COLLUMN UNKNOW EMPRESTIMO at line 1, column 42]
Abraços!
------------------
Gostei + 0
26/04/2005
Juliopedroni
Dm.Tbl_TipoConsulta.SelectSQL.Add(´select * from TIPO_CONSULTA Where TIPO = ´´´ + Trim(Combo_TipoConsulta.Text) + ´´´´);
Me avise se funcionou...
Falow...
Gostei + 0
26/04/2005
Mahdak
Abraços!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)