Perk
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 18/01/2005 13:52 hs
Numa reserva de Hotel, o cliente pode pagar a reserva em uma parcela ou em duas. Eu preciso verificar todo dia ao abrir o programa se algum depósito venceu e não foi feito. Então no programa eu tenho um campo para o 1º depósito e um Chk que é ticado qdo o depósito é confirmado, e a mesma coisa para o 2º depósito. Sendo que o 1º depósito sempre vai existir e o 2º podendo ficar em branco qdo não existe, e neste caso o programa já faz o tique no Chk correspondente ao segundo depósito. a SQL que faz esta procura é esta: Dataf = Format(Left(Date, 10), "mm/dd/yyyy") SQL = "select * from Reservas where " SQL = SQL & "Dt_Prim_Dep <= " & "#" & Dataf & "#" & " and Chk_Prim_Dep like '" + "n" + "' " SQL = SQL & "or Dt_Seg_Dep <= " & "#" & Dataf & "#" & " and Chk_Seg_Dep like '" + "n" + "'" Set Dst = db.CreateDynaset(SQL) O que acontece é que ela está me trazendo os 1º depósitos não confirmados mesmo que eles não sejam maior ou igual a data de hoje, o que é maioria !!!
|
|
|
|
Perk
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 18/01/2005 14:24 hs
ops, errei na descrição do erro. o correto é: "O que acontece é que ela está me trazendo os 1º depósitos não confirmados mesmo que eles SEJAM maior ou igual a data de hoje, o que é maioria !!!"
|
|
|
|
Postada em 18/01/2005 14:39 hs
Se eu entendi direito vc quer q a sua query traga as reservas q não foram pagas tanto da primeira ou da segunda parcela.... Tenta o select abaixo, eu desmembrei as datas em day, month e year pois pelo jeito vc esta trabalhando com o access. Eu tive muitos problemas para trabalhar com data no access por isso fiz dessa forma.... A unica coisa que esta de diferente da sua consulta é o desmembramento da data e o or q verifica se o 1º pagamento esta efetuado.... select * from reservas where day(Dt_prim_Dep)<=day(dataf) and month(Dt_prim_Dep)<=month(dataf) and year(Dt_prim_Dep)<=year(dataf) and ( chk_prim_Dep = 'n' or chk_prim_dep = 'N' ) or (chk_prim_dep='s' or chk_prim_dep='S') and day(Dt_Seg_Dep)<=day(dataf) and month(Dt_Seg_Dep)<=month(dataf) and year(Dt_Seg_Dep)<=year(dataf) and (Chk_Seg_Dep ='N' or Chk_Seg_Dep ='N') Espero que eu tenha entendido certo e podido ajudar
DM MASTER":.
|
|
|
Perk
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 18/01/2005 14:57 hs
Vlw pela ajuda DM MASTER, mas esta SQL dá me dando o erro 3061
|
|
|
|
Postada em 18/01/2005 15:05 hs
Então faz a consulta do jeito q vc estava fazendo e só acrescenta no OR a coisa chk_prim_dep like '% s %' Dataf = Format(Left(Date, 10), "mm/dd/yyyy") SQL = "select * from Reservas where " SQL = SQL & "Dt_Prim_Dep <= " & "#" & Dataf & "#" & " and Chk_Prim_Dep like '" + "n" + "' " SQL = SQL & "or Chk_Prim_Dep like '" + "s" + "' and Dt_Seg_Dep <= " & "#" & Dataf & "#" & " and Chk_Seg_Dep like '" + "n" + "'" Set Dst = db.CreateDynaset(SQL) tenta assim.... pois pelo que entendi só esta faltando isso
DM MASTER":.
|
|
|
Perk
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 18/01/2005 15:38 hs
Descobri, sem querer, uma maneira de funcionar. Coloquei CvDate(Dt_Prim_Dep). O engraçado é que no BD os dois campos são identicos, mudando apenas o nome, mas se eu coloco tb CvDate(Dt_Seg_Dep), dá o erro 3464. Bom, o que importa é que está funcionando agora. Vou fazer mais testes para verificar se está certo mesmo Obrigado pela ajuda !!!!
|
|
|