Vraag


Acties:
  • 0 Henk 'm!

  • Nightseced
  • Registratie: November 2010
  • Laatst online: 05-01-2021
Goedenavond iedereen,

Op dit moment ben ik erg aan het tobben om de uitlijning van mijn tabel correct te krijgen, zodat deze goed gelezen wordt in Outlook. Het probleem is dat de cellen van mijn tabel uitgerekt worden zodat de waarde die wordt opgehaald van de database in 1 regel getoond wordt, in plaats dat deze waarde netjes binnen de juiste cel breedte blijven. Het vreemde hierin is dat wanneer ik zelf tekst in deze cel laat plaatsen, wat binnen de HTML code is opgeschreven, de tabel wel goed reageert. Zodra er informatie uit de database geprint wordt in de cel gaat de tabel vreemd reageren.

Ik kom er maar niet achter, en ben al een hele tijd aan het zoeken naar een oplossing. Uiteraard gaat hiermee gemoeid dat er verschillende dingen vanaf een forum in het script erbij geplakt wordt, wat uiteindelijk resulteert in een bende...
Ook ben ik halverwege het troubleshooten erachter gekomen dat CSS niet gaat werken met sp_send_dbmail.

Ik heb de data in de database omgezet naar test data, en het script is ook bijgevoegd. Ik hoop dat jullie hier een antwoord op hebben, want ik wordt echt verdrietig hiervan.

De database is wel gebaseerd op SQL Server 2016, en is dus alleen te restoren op soortgelijke SQL of hoger. Als dit een probleem vormt, kan ik wel een backup aanpassen die vanaf een SQL 2014 komt. :)

...

Alle reacties


Acties:
  • 0 Henk 'm!

  • Nightseced
  • Registratie: November 2010
  • Laatst online: 05-01-2021
Hmm.. ik wist niet dat je geen bestanden kon uploaden. Ik zorg wel voor een linkje.

Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 20:23

AW_Bos

Liefhebber van nostalgie... 🕰️

Met genoeg Karmapunten kan je foto's uploaden op Tweakers. Anders moet je maar iets als imgBB gebruiken o.i.d.

[ Voor 19% gewijzigd door AW_Bos op 24-06-2019 21:16 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • Nightseced
  • Registratie: November 2010
  • Laatst online: 05-01-2021
Bedankt AW_Bos

De database is inmiddels geüpload: http://s000.tinyupload.com/?file_id=04486656793302977790
Het script kan hier gevonden worden: http://s000.tinyupload.com/?file_id=09629162688354103374

Ik hoop dat jullie mij kunnen helpen.

Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 20:23

AW_Bos

Liefhebber van nostalgie... 🕰️

Je kan je script, structuur, en wat beperkte (dummy) data ook tussen code-tags in het forum kwijt.
Moet passen in een minimaal aantal regels.

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • Nightseced
  • Registratie: November 2010
  • Laatst online: 05-01-2021
OK. Maar ik neem aan dat via de links ook voldoende is? Of werkt dat niet efficient?

Acties:
  • 0 Henk 'm!

  • skate master
  • Registratie: September 2004
  • Laatst online: 20:48

skate master

Autodesk Educator Expert

Nightseced schreef op dinsdag 25 juni 2019 @ 08:36:
OK. Maar ik neem aan dat via de links ook voldoende is? Of werkt dat niet efficient?
Wanneer je goed geholpen wilt worden zul je toch even de moeite moeten nemen om enkel de relevante code te plaatsen op het forum. Gebruik dan wel even de code tags voor de leesbaarheid.

Acties:
  • 0 Henk 'm!

  • Rensjuh
  • Registratie: Juli 2007
  • Laatst online: 20:09
Nightseced schreef op maandag 24 juni 2019 @ 21:14:
Het vreemde hierin is dat wanneer ik zelf tekst in deze cel laat plaatsen, wat binnen de HTML code is opgeschreven, de tabel wel goed reageert. Zodra er informatie uit de database geprint wordt in de cel gaat de tabel vreemd reageren.
Neem aan dat je hiermee bedoelt dat je de volledige code (inclusief de tekst e.d.) uit de bron hebt gehaald en opgeslagen hebt in een .html bestand?

Ligt het dan niet gewoon aan je email client?

Dat Outlook / Gmail / whatever dit niet gewoon netjes weergeeft?

PV Output


Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
Nightseced schreef op maandag 24 juni 2019 @ 21:14:
Het vreemde hierin is dat wanneer ik zelf tekst in deze cel laat plaatsen, wat binnen de HTML code is opgeschreven, de tabel wel goed reageert. Zodra er informatie uit de database geprint wordt in de cel gaat de tabel vreemd reageren.
Dan is mijn eerste gok dat je de data uit de database niet correct uitleest, eerlijk gezegd. Zonder code kan ik daar helaas niets over zeggen, en zoals @skate master al opmerkt ben ik er niet dol op om vreemde bestanden te downloaden van een forum.

Acties:
  • 0 Henk 'm!

  • Nightseced
  • Registratie: November 2010
  • Laatst online: 05-01-2021
De variabele die wordt opgehaald is NVARCHAR. Ik denk dat dit moet werken, omdat het gewoon tekst is.


Onderstaand de code

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
DECLARE @email varchar(max) = 'email@email.com' /]
Declare @BodyData nvarchar(MAX)-- 
Declare @LevID UniqueIdentifier --= (Select TOP 1 LevID from Bestellingen where Gerapporteerd = 0)
Declare @Suppliername nvarchar(MAX)
Declare @SupplierEmail nvarchar(MAX)
Declare @SupplierAddress nvarchar(MAX)
Declare @SupplierPostalCode nvarchar(MAX)
Declare @SupplierCity nvarchar(MAX)
Declare @SupplierPhone nvarchar(MAX)
Declare @PartArticleCode nvarchar(MAX)
Declare @PartDescription nvarchar(MAX)
Declare @OrderQuantity nvarchar(MAX)
Declare @PartUnit nvarchar(MAX)
Declare @PartPricePerUnit nvarchar(MAX)

DECLARE Suppliercursor CURSOR FOR

SELECT l.email, l.naam, l.Adres, l.Postcode, l.Woonplaats, l.Telefoon from Leveranciers L
INNER JOIN Bestellingen B on B.LevID = L.ID
Where b.Gerapporteerd = 0

OPEN SupplierCursor
FETCH NEXT FROM Suppliercursor INTO @SupplierEmail, @Suppliername, @SupplierAddress, @SupplierPostalCode, @SupplierCity, @SupplierPhone
WHILE @@FETCH_STATUS = 0

BEGIN 

SET @BodyData = 
'
        <table align="center" border="0" cellpadding="0" cellspacing="0" width="800" style="border-collapse: collapse;">
            <tr>
                <td align="center">
                <h1><strong> <span style="font-size: 50px; font-family:Verdana; color:Gray; ">Bestelling</span></strong></h1>
                </td>
                <TD align="Right" style="padding: 40px 0 30px 0;">
                <img src="images/werktookniet.png" alt="Logo" width="200" height="100" style="display: block;" />
                </td>
            </tr>
         </table>

        <table align="center" border="0" cellpadding="0" cellspacing="0" width="800" style="border-collapse: collapse;">
            <tr>
                <td>
                <HR WIDTH="100%" SIZE="2" Color="Gray">
                </td>
            </tr>
        </table>


        <table align="center" border="0" cellpadding="0" cellspacing="0" width="800" style="border-collapse: collapse;font-family:Verdana;">

            <tr>
                <td width= "120">
                <strong><Font size="4">Leverancier:</strong> </font>
                </td>
                <td Colspan = "3">
                <Font size="4">' + @Suppliername + ' </font> <!-- Mag 75 karakters lang zijn -->
                </td>

            </tr>

            <tr>
                <td width= "120">
                </TD> 
                <td width= "260">
                <I><Font size="2">' + @SupplierAddress + ' </i> </Font>
                </td>
                <td width= "110">
                <b> Referentie: </b>
                </TD>
                <td>
                KV / VRD
                </td>
            </tr>

            <tr>
                <td>
                </td>
        
                <td>
                <i><Font size="2">' + @SupplierPostalCode +' ' + @SupplierCity + ' </i> </Font>
                </td>
        
                <td>
                <b> Datum: </b>
                </td>
        
                <td>
                Datum, error moet nog oplossen 
                </td>
            </tr>

            <tr>
                <td>
                </td>
        
                <td>
                <i> <Font size="2">[telefoon nummer] </i> </Font>
                </td>
            </tr>
            <tr>
                <td>
                </td>
        
                <td>
                <i> <Font size="2"> [email] </i> </Font>
                </td>
            </tr>

        </Table>

        <table align="center" border="0" cellpadding="0" cellspacing="0" width="800" style="border-collapse: collapse;">
            <tr>
                <td>
                <HR WIDTH="100%" SIZE="2" Color="Gray">
                </td>
            </tr>
        </table>

        <table align="center" border="0" cellpadding="0" cellspacing="0" width="800" style="border-collapse: collapse;font-family:Calibri; font-size:13;">

            <TR>
                <TD width= "50">
                <b> Art. nummer </b>
                </TD>
        
                <TD  width= "270">
                <b> Omschrijving </b>
                </TD>
        
                <TD width= "11">
                <b> Aantal </b>
                </TD>
        
                <TD width= "55">
                <b> Besteleenheid </b>
                </TD>
        
                <TD width= "25">
                <b> Prijs </b>
                </TD>       
        
            </TR>
            </TABLE>
    '
DECLARE Orderlines CURSOR FOR

Select 
O.Omschrijving
,O.Artikelnummer
,O.Prijs
,O.Verpakkingseenheid
,B.Aantal
from Bestellingen B
INNER JOIN Leveranciers L ON L.id = B.LevID
INNER JOIN Onderdelen O on O.ID = B.OnderdeelID
Where L.Naam = @Suppliername AND B.Gerapporteerd = 0

OPEN Orderlines
FETCH NEXT FROM Orderlines INTO @PartDescription, @PartArticleCode, @PartPricePerUnit, @PartUnit, @OrderQuantity
WHILE @@FETCH_STATUS = 0

BEGIN

SET @BodyData = @BodyData + 
'
<table align="center" layout="fixed" border="0" cellpadding="0" cellspacing="0" width="800" style="border-collapse: collapse;font-family:Verdana; font-size:13;">
        <TR>
        <TD width= "50">
        ' + @PartArticleCode + '
        </TD>
        
        <TD  width= "270">
        ' + @PartDescription + ' <!-- Dit mag 62 tekens lang zijn -->
        </TD>
        
        <TD width= "11">
        ' + @OrderQuantity + '
        </TD>
        
        <TD width= "55">
        ' + @PartUnit + '
        </TD>
        
        <TD width= "25">
        ' + @PartPricePerUnit + '
        </TD>       
        
    </TR>
    </TABLE>
'


FETCH NEXT FROM Orderlines INTO @PartDescription, @PartArticleCode, @PartPricePerUnit, @PartUnit, @OrderQuantity

END 
CLOSE Orderlines
DEALLOCATE Orderlines 

EXEC msdb.dbo.sp_send_dbmail 
                            @profile_name = 'Gmail',
                            @recipients = @Email,
                            @subject = 'Bestelling',
                            @body=@BodyData,  
                            @body_format ='HTML'


END
Update Bestellingen
Set Gerapporteerd = 1 
WHere LevID = (Select ID from Leveranciers Where naam = @Suppliername)

CLOSE SupplierCursor
DEALLOCATE SupplierCursor


Omdat ik geen idee heb waar het precies mis gaat, heb ik de hele code geplaatst.
Verder denk ik dat het in het onderstaande gedeelte fout gaat:

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
DECLARE Orderlines CURSOR FOR

Select 
O.Omschrijving
,O.Artikelnummer
,O.Prijs
,O.Verpakkingseenheid
,B.Aantal
from Bestellingen B
INNER JOIN Leveranciers L ON L.id = B.LevID
INNER JOIN Onderdelen O on O.ID = B.OnderdeelID
Where L.Naam = @Suppliername AND B.Gerapporteerd = 0

OPEN Orderlines
FETCH NEXT FROM Orderlines INTO @PartDescription, @PartArticleCode, @PartPricePerUnit, @PartUnit, @OrderQuantity
WHILE @@FETCH_STATUS = 0

BEGIN

SET @BodyData = @BodyData + 
'
<table align="center" layout="fixed" border="0" cellpadding="0" cellspacing="0" width="800" style="border-collapse: collapse;font-family:Verdana; font-size:13;">
        <TR>
        <TD width= "50">
        ' + @PartArticleCode + '
        </TD>
        
        <TD  width= "270">
        ' + @PartDescription + ' <!-- Dit mag 62 tekens lang zijn -->
        </TD>
        
        <TD width= "11">
        ' + @OrderQuantity + '
        </TD>
        
        <TD width= "55">
        ' + @PartUnit + '
        </TD>
        
        <TD width= "25">
        ' + @PartPricePerUnit + '
        </TD>       
        
    </TR>
    </TABLE>
'


De reden waarom er meerdere tabellen zijn gemaakt, is omdat de laatste cursor orderlines de eerste orderregel van de bestelling netjes in het tabel plaatst, maar de volgende orderregels werden als tekst onder de tabel geplaatst.

Al met al, vind ik dat het script vreemd reageert op iets wat naar mijn weten gewoon mogelijk moet zijn.

Maar hier komt het probleem van uren naar een scherm turen... je gaat je blind staren 8)7


Ik begrijp dat zomaar bestanden downloaden niet verstandig is, maar het uploaden van script + database leek mij de beste manier om jullie van alle informatie te voorzien. Sorry voor het ongemak in ieder geval

Acties:
  • 0 Henk 'm!

  • Rensjuh
  • Registratie: Juli 2007
  • Laatst online: 20:09
https://www.w3schools.com/cssref/pr_tab_table-layout.asp

Value
fixed

Description
Sets a fixed table layout algorithm. The table and column widths are set by the widths of table and col or by the width of the first row of cells. Cells in other rows do not affect column widths. If no widths are present on the first row, the column widths are divided equally across the table, regardless of content inside the cells

Zou het niet te maken kunnen hebben met je table layout settings?
Deze heb je op layout="fixed" staan, wat resulteert in een verdeling van de kolom breedtes.
Jij hebt geen width op je eerste rij staan, wel op je kolommen.

Laat anders eens een voorbeeld zien van zo'n ontvangen email.
Ik snap ook niet helemaal wat je precies bedoelt, misschien dat een voorbeeldmail wat meer duidelijkheid kan geven.

PV Output


Acties:
  • 0 Henk 'm!

  • Nightseced
  • Registratie: November 2010
  • Laatst online: 05-01-2021
Hoi Rensjuh!

Bedankt voor je reactie! Ja, ik zal morgen een afbeelding uploaden. Ik ga ook gelijk kijken naar de fixed.

Bedankt voor reageren!!

Acties:
  • 0 Henk 'm!

  • Nightseced
  • Registratie: November 2010
  • Laatst online: 05-01-2021
Hallo,

Ik heb de Fixed weggehaald, maar dat gaf helaas geen resultaat. Achteraf is dit logisch want CSS werkt niet lekker met SQL Server mailen.

De Row heeft nu ook een vaste width gekregen.

Wat ik ook heb geprobeerd is om de WIdth van het eerste kolom Artikelnummer terug van 50 naar 10 te plaatsen. Het vreemde is dat de artikelnummers met meer karakters veel whitespace krijgen, terwijl de artikelnummers die weinig karakters hebben, veel minder whitespaces krijgen. Het is echt vreemd.
Anyway, ik blijf nog even rommelen met breedtes van kolommen... Of zoek ik nu in een totaal verkeerde richting?

Verder heb ik ook met CAST de NVARCHAR veranderd naar TEXT. Ook dat is geen oplossing.

Screendump email

Acties:
  • +1 Henk 'm!

  • Nightseced
  • Registratie: November 2010
  • Laatst online: 05-01-2021
Beste mensen,

Het werkt! Ik heb de fout gevonden. Ik ga het script beter leesbaar maken, en deze ook uploaden. Dan zal ik ook uitleggen wat er verkeerd is gegaan.
Pagina: 1