Om ervoor te zorgen dat de software van de labelprinter de adresstickers netjes kan printen, is het de bedoeling dat deze software zijn adresgegevens uit de Microsoft SQL database kan halen.
Er is daarvoor een view gemaakt en wel de volgende:
Ter illustratie, na het uitvoeren de view worden de volgende resultaten verkregen:
Het nadeel van de labelsoftware is dat het pakket niet de regels met een waarde NULL negeert (en dus alle adresgegevens netjes onder elkaar zet), maar dat hij lege regels print (dus als resultaat krijg je de waarde van Deel1, dan een lege regel, dan Deel3 etc etc)
Normaliter zou ik de resultaten van een query in een tijdelijke tabel inserten en dan via een ALTER TABLE de null waarden laten vervallen, alleen is er hier sprake van dat elke keer een andere column leeg is, dat verschilt per rij.
Ik vraag me dus af of het mogelijk is om per row te kijken of de column waarde leeg is en indien deze leeg is, de waarde van column erna over te nemen (mits die niet leeg is).
In het voorbeeld zou dus op rij 1 Deel3 op de plek van Deel2 komen, op de plek van Deel3 zou Deel7 komen en op de plek van Deel4 zou Deel9 komen en afsluitend op de plek van Deel5 zou Deel10 komen.
In rij 2 zou Deel3 op de plek van Deel2 komen, op plek Deel3 zou Deel7 komen en op de plek van Deel4 zou Deel10 komen.
En dat dan zo voor elke rij.
Iemand een tip?
Er is daarvoor een view gemaakt en wel de volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| SELECT
AL2.Name AS Deel1,
CASE AL2.[Name 2] WHEN '' THEN NULL ELSE AL2.[Name 2] END AS Deel2,
CASE AL2.Address WHEN '' THEN NULL ELSE AL2.Address END AS Deel3,
CASE AL2.[Address 2] WHEN '' THEN NULL ELSE AL2.[Address 2] END AS Deel4,
CASE AL2.[Adres 3] WHEN '' THEN NULL ELSE AL2.[Adres 3] END AS Deel5,
CASE AL2.[Adres 4] WHEN '' THEN NULL ELSE AL2.[Adres 4] END AS Deel6,
CASE AL3.Name WHEN 'United Kingdom' THEN AL2.City ELSE AL2.[Post Code] + ' ' + AL2.City END AS Deel7,
CASE AL4.Name WHEN '' THEN NULL ELSE AL4.Name END AS Deel8,
CASE AL3.Name WHEN 'United Kingdom' THEN AL2.[Post Code] END AS Deel9,
AL3.Name AS Deel10
FROM dbo.[NavDB$Sales Invoice Line] AS AL1 INNER JOIN
dbo.[NavDB$Contact] AS AL2 LEFT OUTER JOIN
dbo.[NavDB$Country_Region] AS AL3 ON AL2.[Country_Region Code] = AL3.Code LEFT OUTER JOIN
dbo.[NavDB$Territory] AS AL4 ON AL2.[Territory Code] = AL4.Code ON AL1.[Sell-to Customer No_] = AL2.No_ INNER JOIN
dbo.[NavDB$Sales Invoice Header] AS AL5 ON AL1.[Document No_] = AL5.No_
GROUP BY AL1.[Sell-to Customer No_], AL1.[Document No_], AL2.Name, AL2.[Name 2], AL2.Address, AL2.[Address 2], AL2.City, AL2.[Adres 3], AL2.[Adres 4], AL2.Huisnummer,
AL2.[Huisnummer toevoeging], AL3.Name, AL4.Name, AL5.[Payment Method Code], AL5.timestamp, AL2.[Post Code]
HAVING (AL3.Name IS NOT NULL)
ORDER BY AL5.timestamp DESC |
Ter illustratie, na het uitvoeren de view worden de volgende resultaten verkregen:
code:
1
2
3
4
5
| Deel1 Deel2 Deel3 Deel4 Deel5 Deel6 Deel7 Deel8 Deel9 Deel10 Naam X NULL 189 Albany Road NULL NULL NULL CHATHAM NULL ME4 5DW United Kingdom Naam Y NULL Marx-Strasse 30 NULL NULL NULL 04649 DOHNA NULL NULL Deutschland Naam B NULL 14 Solent Drive Barton On Sea NULL NULL NEW MILTON Hampshire BH29 7XX United Kingdom Naam Z NULL Extraweg 72 Steinbach NULL NULL 02351 Moritzburg NULL NULL Deutschland |
Het nadeel van de labelsoftware is dat het pakket niet de regels met een waarde NULL negeert (en dus alle adresgegevens netjes onder elkaar zet), maar dat hij lege regels print (dus als resultaat krijg je de waarde van Deel1, dan een lege regel, dan Deel3 etc etc)
Normaliter zou ik de resultaten van een query in een tijdelijke tabel inserten en dan via een ALTER TABLE de null waarden laten vervallen, alleen is er hier sprake van dat elke keer een andere column leeg is, dat verschilt per rij.
Ik vraag me dus af of het mogelijk is om per row te kijken of de column waarde leeg is en indien deze leeg is, de waarde van column erna over te nemen (mits die niet leeg is).
In het voorbeeld zou dus op rij 1 Deel3 op de plek van Deel2 komen, op de plek van Deel3 zou Deel7 komen en op de plek van Deel4 zou Deel9 komen en afsluitend op de plek van Deel5 zou Deel10 komen.
In rij 2 zou Deel3 op de plek van Deel2 komen, op plek Deel3 zou Deel7 komen en op de plek van Deel4 zou Deel10 komen.
En dat dan zo voor elke rij.
Iemand een tip?