30. september 2001 - 20:16
												Der er
									2 kommentarer													og
					1 løsning									
									
		 
		
			
SQL i forbindelse med udregninger
			Jeg har en tabel med 2 datofelter, start og slut som udgør en periode, jeg kan indtaste 2 andre datoer i en formular som udgør en anden periode. 
Problem: 
Hvordan formulere man en SQL sætning i en formular der medtager de to datoer fra tabellen, samt et nyt felt. (det er ikke problemet)
Hvor det nye felt skal indeholde det antal dage som de to perioder overlapper hinanden med???
resultatet skal kunne virke ved alle kombinationer af datoer.
					
		
	 
		
								
					
				30. september 2001 - 20:58
				#1
			 				
						
		 
		
			What do you want to see exactly ion the New field?
Have you tried drawing your problem on a piece of paper just to see how many possibilities there are. Draw two vertical lines representing the periods you enter in the form. Then plot in other periods representing those that COULD come from your table. You will have at least 6 possibilities. Some where the period is between the forms start and end, some overlapping both the start and end. Others overlapping either the start or the end. And also those not overlapping at all.
So is it the tables start date, or the end date?
you are interested in. And in relation to the forms start or end date?
Hope you can see what the problem is.
		
		
	 
	
		
								
					
				30. september 2001 - 21:07
				#2
						
		 
		
			Jeg er enig med Terry i, at der er 6 muligheder, men de kan nu forholdsvis let løses ved at finde maksimum for starttider og minimum for sluttider.
SELECT Tabel.Start1, Tabel.Slut1, Tabel.Start2, Tabel.Slut2, IIf([Start1]>[Start2],[Start1],[Start2]) AS Start3, IIf([Slut1]<[Slut2],[Slut1],[Slut2]) AS Slut3, IIf([Slut3]>=[Start3],DateDiff(\"d\",[Start3],[Slut3]),\"Intet overlap\") AS NDage
FROM Tabel;
I denne SQL-sætning har jeg antaget at begge tidsperioder (Start1-Slut1 og Start2-Slut2) er indeholdt i tabellen, men hvis nogle kommer fra en formular kan man i stedet skrive Forms!formularnavn!feltnavn – f.eks. Forms!DatoFormular!Start2
mvh/Jens-Peter