Avatar billede trinerafn Nybegynder
25. januar 2005 - 14:43 Der 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];
Avatar billede sw_red_6 Nybegynder
25. januar 2005 - 14:50 #1
lige til en anden gang kan du så ikke prøve at sætte lidt linieskift ind for det er ret svært at overskue hvad der egentlig står.
Avatar billede terry Ekspert
25. januar 2005 - 18:54 #2
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!
Avatar billede trinerafn Nybegynder
26. januar 2005 - 15:15 #3
>It's sent. Mvh. Trine
Avatar billede terry Ekspert
26. januar 2005 - 15:19 #4
received!
Avatar billede terry Ekspert
26. januar 2005 - 16:24 #5
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];
Avatar billede terry Ekspert
26. januar 2005 - 16:28 #6
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.

ThomasJepsen has an example of this http://www.makeiteasy.dk/eksempler/DynamiskSøgefunktion.zip
Avatar billede terry Ekspert
26. januar 2005 - 22:23 #7
is this working now Trine?

I sent you a mail earlier. Ah! maybe to your work address
Avatar billede trinerafn Nybegynder
26. januar 2005 - 22:34 #8
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.
Avatar billede terry Ekspert
27. januar 2005 - 12:16 #9
thanks Trine, drop me a mail if your still having problems
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester