SQL voor opmaak adressen

Status
Niet open voor verdere reacties.

renetje83

Nieuwe gebruiker
Lid geworden
29 jun 2008
Berichten
1
Momenteel ben ik ons orderverwerkingssysteem aan het herschrijven.
Hierin wil ik een stuk gebruikersgemak verbeteren, maar de hoofdreden is om alle records over te zetten naar SQL server.
Het programmeerwerk voor de user interface is af en ik ben nu bezig om de rapporten op te stellen.

Op dat we een groot aantal (meertalige) rapporten hebben, wil ik dat alle data zo compleet mogelijk door de SQL server wordt aangeleverd.

Nu loop ik tegen het volgende probleem aan.
Zoals je kunt zien in onderstaande screenshot bestaat de mogelijkheid om het adres verdeeld over 5 velden in te voeren. Dit om ook buitenlandse adressen in te voeren.

screenshot.jpg


Vervolgens wil ik op de SQL server een query laten uitvoeren, die er voor zorgt dat het adres verdeeld over 5 velden weergegeven wordt. De query moet dus als-het-ware de lege regels er van tussen laten. Verder bepaald de landkeuze of de postcode vòòr of achter de woonplaats wordt gezet. Bij Nederlandse adressen wordt geen landnaam weergegeven.

Ik heb de volgende SQL code al gemaakt, maar zoals je ziet wordt dan de postcode en woonplaats meerdere keren weergegeven.

Code:
SELECT  dbo.tblCompany.CompanyID,
	Bedrijfsnaam = dbo.tblCompany.CompanyNaam, 
	BezoekAdres1 = 
		CASE WHEN dbo.tblCompany.CompanyBezoekAdres1 IS NOT NULL THEN
			dbo.tblCompany.CompanyBezoekAdres1
		ELSE
			CASE WHEN dbo.tblCompany.CompanyBezoekAdres2 IS NOT NULL THEN
				dbo.tblCompany.CompanyBezoekAdres2
			ELSE
				CASE WHEN dbo.tblCompany.CompanyBezoekAdres3 IS NOT NULL THEN
					dbo.tblCompany.CompanyBezoekAdres3
				ELSE
					CASE WHEN  dbo.tblLand.LandPCvolgorde = 2 THEN
						CASE WHEN dbo.tblCompany.CompanyBezoekPostcode IS NOT NULL THEN
							dbo.tblCompany.CompanyBezoekPlaats + '  ' + dbo.tblCompany.CompanyBezoekPostcode
						ELSE
							CASE WHEN dbo.tblCompany.CompanyBezoekPlaats IS NOT NULL THEN
								dbo.tblCompany.CompanyBezoekPlaats
							ELSE
								CASE WHEN dbo.tblCompany.CompanyBezoekLandID <> 'NL' THEN
									dbo.tblLand.LandOmschrE
								END
							END
						END
					ELSE
						CASE WHEN dbo.tblCompany.CompanyBezoekPostcode IS NOT NULL THEN
							dbo.tblCompany.CompanyBezoekPostcode + '  ' + dbo.tblCompany.CompanyBezoekPlaats
						ELSE
							CASE WHEN dbo.tblCompany.CompanyBezoekPlaats IS NOT NULL THEN
								dbo.tblCompany.CompanyBezoekPlaats
							ELSE
								CASE WHEN dbo.tblCompany.CompanyBezoekLandID <> 'NL' THEN
									dbo.tblLand.LandOmschrE
								END
							END
						END
					END
				END
			END
		END,
	BezoekAdres2 =
		CASE WHEN dbo.tblCompany.CompanyBezoekAdres2 IS NOT NULL THEN
			dbo.tblCompany.CompanyBezoekAdres2
		ELSE
			CASE WHEN dbo.tblCompany.CompanyBezoekAdres3 IS NOT NULL THEN
				dbo.tblCompany.CompanyBezoekAdres3
			ELSE
				CASE WHEN  dbo.tblLand.LandPCvolgorde = 2 THEN
					CASE WHEN dbo.tblCompany.CompanyBezoekPostcode IS NOT NULL THEN
						dbo.tblCompany.CompanyBezoekPlaats + '  ' + dbo.tblCompany.CompanyBezoekPostcode
					ELSE
						CASE WHEN dbo.tblCompany.CompanyBezoekPlaats IS NOT NULL THEN
							dbo.tblCompany.CompanyBezoekPlaats
						ELSE
							CASE WHEN dbo.tblCompany.CompanyBezoekLandID <> 'NL' THEN
								dbo.tblLand.LandOmschrE
							END
						END
					END
				ELSE
					CASE WHEN dbo.tblCompany.CompanyBezoekPostcode IS NOT NULL THEN
						dbo.tblCompany.CompanyBezoekPostcode + '  ' + dbo.tblCompany.CompanyBezoekPlaats
					ELSE
						CASE WHEN dbo.tblCompany.CompanyBezoekPlaats IS NOT NULL THEN
							dbo.tblCompany.CompanyBezoekPlaats
						ELSE
							CASE WHEN dbo.tblCompany.CompanyBezoekLandID <> 'NL' THEN
								dbo.tblLand.LandOmschrE
							END
						END
					END
				END
			END
		END,
	BezoekAdres3 = 
		CASE WHEN dbo.tblCompany.CompanyBezoekAdres3 IS NOT NULL THEN
			dbo.tblCompany.CompanyBezoekAdres3
		ELSE
			CASE WHEN  dbo.tblLand.LandPCvolgorde = 2 THEN
				CASE WHEN dbo.tblCompany.CompanyBezoekPostcode IS NOT NULL THEN
					dbo.tblCompany.CompanyBezoekPlaats + '  ' + dbo.tblCompany.CompanyBezoekPostcode
				ELSE
					CASE WHEN dbo.tblCompany.CompanyBezoekPlaats IS NOT NULL THEN
						dbo.tblCompany.CompanyBezoekPlaats
					ELSE
						CASE WHEN dbo.tblCompany.CompanyBezoekLandID <> 'NL' THEN
							dbo.tblLand.LandOmschrE
						END
					END
				END
			ELSE
				CASE WHEN dbo.tblCompany.CompanyBezoekPostcode IS NOT NULL THEN
					dbo.tblCompany.CompanyBezoekPostcode + '  ' + dbo.tblCompany.CompanyBezoekPlaats
				ELSE
					CASE WHEN dbo.tblCompany.CompanyBezoekPlaats IS NOT NULL THEN
						dbo.tblCompany.CompanyBezoekPlaats
					ELSE
						CASE WHEN dbo.tblCompany.CompanyBezoekLandID <> 'NL' THEN
							dbo.tblLand.LandOmschrE
						END
					END
				END
			END
		END,
	BezoekAdres4 = 
		CASE WHEN  dbo.tblLand.LandPCvolgorde = 2 THEN
			CASE WHEN dbo.tblCompany.CompanyBezoekPostcode IS NOT NULL THEN
				dbo.tblCompany.CompanyBezoekPlaats + '  ' + dbo.tblCompany.CompanyBezoekPostcode
			ELSE
				CASE WHEN dbo.tblCompany.CompanyBezoekPlaats IS NOT NULL THEN
					dbo.tblCompany.CompanyBezoekPlaats
				ELSE
					CASE WHEN dbo.tblCompany.CompanyBezoekLandID <> 'NL' THEN
						dbo.tblLand.LandOmschrE
					END
				END
			END
		ELSE
			CASE WHEN dbo.tblCompany.CompanyBezoekPostcode IS NOT NULL THEN
				dbo.tblCompany.CompanyBezoekPostcode + '  ' + dbo.tblCompany.CompanyBezoekPlaats
			ELSE
				CASE WHEN dbo.tblCompany.CompanyBezoekPlaats IS NOT NULL THEN
					dbo.tblCompany.CompanyBezoekPlaats
				ELSE
					CASE WHEN dbo.tblCompany.CompanyBezoekLandID <> 'NL' THEN
						dbo.tblLand.LandOmschrE
					END
				END
			END
		END,
	BezoekAdres5 =
		CASE WHEN dbo.tblCompany.CompanyBezoekLandID <> 'NL' THEN
			dbo.tblLand.LandOmschrE
		END,

	Telefoon = dbo.tblCompany.CompanyTelefoon,
	Fax = dbo.tblCompany.CompanyFax,
	BTWnummer = dbo.tblCompany.CompanyBTWnummer
	
FROM    dbo.tblCompany INNER JOIN
        dbo.tblLand ON dbo.tblCompany.CompanyBezoekLandID = dbo.tblLand.LandID

Maar wanneer ik bovenstaande VIEW uitvoer, krijg ik het volgende resultaat:
resultaat.jpg


Wie weet de oplossing om dit goed te laten functioneren?

Alvast bedankt!
René
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan