25. januar 2005 - 14:43Der er
8 kommentarer og 1 løsning
Hvordan søger man på datoer fra 2 relaterede tabeller
Hvordan kan man i en form (FrmOrdersSearch), bygget på en Query (QryOrdersAndAdds)best. af 2 tabeller(LeftJoinede)TblOrdreMeddel og TblTillaeg, søge på en datorange i 2 tekstboxe og i en subform (FrmOrdersSearchSub)også bygget på QryOrdersAndAdds, få vist de rigtige linier. TblOrdreMeddels felt hedder Ordredato og TblTillaegs felt hedder Tillaegsordredato. FrmOrderSearchs textboxe hedder TbFraDato og TbTilDato og er unbound. Querien QryOrdersAndAdds ser sådan ud i SQL men virker nu kun på TblOrdreMeddels ordredato: SELECT DISTINCTROW TblOrdreMeddel.Projektnr, TblOrdreMeddel.Typenavn, TblOrdreMeddel.Ordredato, TblOrdreMeddel.KAD, TblOrdreMeddel.Faktureringsansvarlig, TblOrdreMeddel.Projektnavn, TblOrdreMeddel.Customer, TblOrdreMeddel.Godkendt, [TblOrdreMeddel].[OprinKontraktbeloeb1]*[Rate1] AS Total1, [TblOrdreMeddel].[OprinKontraktbeloeb2]*[Rate2] AS Total2, [TblOrdreMeddel].[OprinKontraktbeloeb3]*[Rate3] AS Total3, Nz([Total1])+Nz([Total2])+Nz([Total3]) AS TotaliDKK, TblOrdreMeddel.Omkostninger1, TblOrdreMeddel.Omkostninger2, TblOrdreMeddel.Omkostninger3, [Total1]-[Omkostninger1] AS DBEt1, [Total2]-[Omkostninger2] AS DBEt2, [Total3]-[Omkostninger3] AS DBEt3, TblOrdreMeddel.Timer1, TblOrdreMeddel.Timer2, TblOrdreMeddel.Timer3, [DBEt1]-[Timer1] AS DBTo1, [DBEt2]-[Timer2] AS DBTo2, [DBEt3]-[Timer3] AS DBTo3, TblOrdreMeddel.TillaegsLinier, TblTillaeg.TillaegsLinie, TblTillaeg.ProjektnrLinie, TblTillaeg.[Tillæg nr], TblTillaeg.Tillaegsordredato, TblTillaeg.Tillaegsbeloeb, TblTillaeg.Tillaegsrate, [TblTillaeg]![Tillaegsbeloeb]*[TblTillaeg]![Tillaegsrate] AS Tillaegstotal, TblTillaeg.Tillaegsomkostninger, [Tillaegstotal]-[Tillaegsomkostninger] AS TillaegsDB1, TblTillaeg.Tillaegstimer, [TillaegsDB1]-[Tillaegsomkostninger] AS TillaegsDB2, TblTillaeg.Tillaegsgodkendt, [TotaliDKK]+[Tillaegstotal] AS NykontraktSum FROM TblOrdreMeddel LEFT JOIN TblTillaeg ON TblOrdreMeddel.Projektnr = TblTillaeg.ProjektnrLinie WHERE (((TblOrdreMeddel.Typenavn) Like ("*" & [Forms]![FrmOrdersSearch]![CmbTypevalg] & "*")) AND ((TblOrdreMeddel.Ordredato)>=([Forms]![FrmOrdersSearch]![TbFraDato]) And (TblOrdreMeddel.Ordredato)<=([Forms]![FrmOrdersSearch]![TbTilDato])) AND ((TblOrdreMeddel.KAD) Like ("*" & [Forms]![FrmOrdersSearch]![CmbKADsoeg] & "*")) AND ((TblOrdreMeddel.Faktureringsansvarlig) Like ("*" & [Forms]![FrmOrdersSearch]![TbResponsible] & "*")) AND ((TblOrdreMeddel.Customer) Like ("*" & [Forms]![FrmOrdersSearch]![CmbKundeSoeg] & "*")) AND ((TblOrdreMeddel.Godkendt) Like ("*" & [Forms]![FrmOrdersSearch]![CheckGodkendtOrdre] & "*"))) ORDER BY TblOrdreMeddel.Projektnr, TblTillaeg.[Tillæg nr];
I agree with sw_red_6 that it isnt easy to read, so if you can send me your dB then I will be willing to take a look. eksperten@NOSPAMsanthell.dk
remove NOSPAM
using an OUTER JOIN (left or right) may NOT give you what you want! Outer joins can return records where there is no realted records on the OUTER table and if you are trying to search on a field in that table then you casn obvioulsy not find records where the OUTER table is empty!
You could try this SELECT DISTINCTROW TblOrdreMeddel.Projektnr, TblOrdreMeddel.Typenavn, TblOrdreMeddel.Ordredato, TblOrdreMeddel.KAD, TblOrdreMeddel.Faktureringsansvarlig, TblOrdreMeddel.Projektnavn, TblOrdreMeddel.Customer, TblOrdreMeddel.Godkendt, [TblOrdreMeddel].[OprinKontraktbeloeb1]*[Rate1] AS Total1, [TblOrdreMeddel].[OprinKontraktbeloeb2]*[Rate2] AS Total2, [TblOrdreMeddel].[OprinKontraktbeloeb3]*[Rate3] AS Total3, Nz([Total1])+Nz([Total2])+Nz([Total3]) AS TotaliDKK, TblOrdreMeddel.Omkostninger1, TblOrdreMeddel.Omkostninger2, TblOrdreMeddel.Omkostninger3, [Total1]-[Omkostninger1] AS DBEt1, [Total2]-[Omkostninger2] AS DBEt2, [Total3]-[Omkostninger3] AS DBEt3, TblOrdreMeddel.Timer1, TblOrdreMeddel.Timer2, TblOrdreMeddel.Timer3, [DBEt1]-[Timer1] AS DBTo1, [DBEt2]-[Timer2] AS DBTo2, [DBEt3]-[Timer3] AS DBTo3, TblOrdreMeddel.TillaegsLinier, TblTillaeg.TillaegsLinie, TblTillaeg.ProjektnrLinie, TblTillaeg.[Tillæg nr], TblTillaeg.Tillaegsordredato, TblTillaeg.Tillaegsbeloeb, TblTillaeg.Tillaegsrate, [TblTillaeg]![Tillaegsbeloeb]*[TblTillaeg]![Tillaegsrate] AS Tillaegstotal, TblTillaeg.Tillaegsomkostninger, [Tillaegstotal]-[Tillaegsomkostninger] AS TillaegsDB1, TblTillaeg.Tillaegstimer, [TillaegsDB1]-[Tillaegsomkostninger] AS TillaegsDB2, TblTillaeg.Tillaegsgodkendt, [TotaliDKK]+[Tillaegstotal] AS NykontraktSum, TblTillaeg.Tillaegsordredato FROM TblOrdreMeddel LEFT JOIN TblTillaeg ON TblOrdreMeddel.Projektnr = TblTillaeg.ProjektnrLinie WHERE (((TblOrdreMeddel.Typenavn) Like ("*" & [Forms]![FrmOrdersSearch]![CmbTypevalg] & "*")) AND ((TblOrdreMeddel.Ordredato)>=([Forms]![FrmOrdersSearch]![TbFraDato]) And (TblOrdreMeddel.Ordredato)<=([Forms]![FrmOrdersSearch]![TbTilDato])) AND ((TblOrdreMeddel.KAD) Like ("*" & [Forms]![FrmOrdersSearch]![CmbKADsoeg] & "*")) AND ((TblOrdreMeddel.Faktureringsansvarlig) Like ("*" & [Forms]![FrmOrdersSearch]![TbResponsible] & "*")) AND ((TblOrdreMeddel.Customer) Like ("*" & [Forms]![FrmOrdersSearch]![CmbKundeSoeg] & "*")) AND ((TblOrdreMeddel.Godkendt) Like ("*" & [Forms]![FrmOrdersSearch]![CheckGodkendtOrdre] & "*"))) OR (((TblOrdreMeddel.Typenavn) Like ("*" & [Forms]![FrmOrdersSearch]![CmbTypevalg] & "*")) AND ((TblOrdreMeddel.KAD) Like ("*" & [Forms]![FrmOrdersSearch]![CmbKADsoeg] & "*")) AND ((TblOrdreMeddel.Faktureringsansvarlig) Like ("*" & [Forms]![FrmOrdersSearch]![TbResponsible] & "*")) AND ((TblOrdreMeddel.Customer) Like ("*" & [Forms]![FrmOrdersSearch]![CmbKundeSoeg] & "*")) AND ((TblOrdreMeddel.Godkendt) Like ("*" & [Forms]![FrmOrdersSearch]![CheckGodkendtOrdre] & "*")) AND ((TblTillaeg.Tillaegsordredato)>=([Forms]![FrmOrdersSearch]![TbFraDato]) And (TblTillaeg.Tillaegsordredato)<=([Forms]![FrmOrdersSearch]![TbTilDato]))) ORDER BY TblOrdreMeddel.Projektnr, TblTillaeg.[Tillæg nr];
You could also make your SQL more dynamic, at the moment I think you need to enter search criteria for all fields otherwise itdoesnt work. If you made it dynamic then you would not need to. The SQL gets altered depending on the fields you enter data into.
I will try it out tomorrow at noon. But it will probably work. The ThomasJepsen example seems to be a little bit over my level. There's only one table no relations and no queries, just code. Very interesting but too difficult for me right now, I have copied it though, to study it later.
thanks Trine, drop me a mail if your still having problems
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.