ColdFusion en MSSQL NTEXT geeft lege string

22-02-2011 | Marcel van Langen | ColdFusion | coldfusion, sql server, ntext, string

Adobe's ColdFusion is een fantastisch product. Om meerdere redenen, maar natuurlijk ook omdat ColdFusion het zo verdraaid eenvoudig maakt om webapplicaties met een veelheid aan databases te kunnen koppelen. In de afgelopen jaren heb ik alle databases wel voorbij zien komen. Maar recent gooide Microsoft SQL Server een nieuwe uitdaging voor mijn voeten: hij weigerde de inhoud van een ntext veld terug te geven. De oplossing bleek akelig eenvoudig.

Het uitgangspunt was eenvoudig: voor een project werd gebruik gemaakt van een Microsoft SQL Server 2008 database. In een te bevragen tabel werd informatie opgeslagen over producten die door de klant in zijn webshop worden aangeboden. Onderdeel is een productomschrijving die voor deze gelegenheid in een NTEXT veld zijn vastgelegd. Niets bijzonders kortom.

Om de gegevens op te halen maakten we gebruik van componenten die volgens good practise alleen de velden ophalen die benodigd zijn. Dus geen SELECT *, maar een heldere opsomming van de benodigde velden. Een van de velden was het veld pro_description, een NTEXT met een omschrijving van het product. Ik wist bovendien - omdat deze gegevens gesynchroniseerd werden met een ERP systeem - dat bij ieder product het veld gevuld was. Kortom, de query zag er ongeveer als volgt uit (irrelevante stukken zijn verwijderd voor leesbaarheid):

<cffunction name="getProductSet" access="public" returntype="query" output="false">
<cfargument name="sho_id" required="yes" type="numeric" hint="webshop">
<cfquery name="recordset" datasource="#this.dsn#">
SELECT , pro_uuid
, pro_name
, pro_description
, pro_tags
, pro_urlsave
FROM product
WHERE pro_sho_id = <cfqueryparam cfsqltype="cf_sql_numeric" value="#arguments.sho_id#" />
</cfquery>
<cfreturn recordset />
</cffunction>

Eenvoudig toch? Alleen, wat ik ook deed, het veld pro_description bleef in de recordset leeg. [empty string]. Huh? Na alle logische controles (zit ik op de goede omgeving te werken? etc.), werd het duidelijk dat het probleem niet bij de code lag. Na enig experimenten bleek de oplossing verbazingwekkend simpel: verplaats het veld pro_description in het SELECT statement achteraan (dus achter pro_urlsave) en het veld wordt wel juist gevuld. Logisch: nee? Oplossing: ja.

Over Morloff

Morloff ontwerpt en realiseert succesvolle webtoepassingen op het gebied van procesoptimalisatie, eCommerce en rapportage door de inzet van moderne webtechnieken, sociale media en zoekmachine optimalisatie.

over ons | diensten | portfolio | contact | route

naar website IJsmonster.nl naar website ICT intermediairs naar website marcelvanlangen.com

Twitter

Morloff

Cuneraweg 169a
3911 RH Rhenen

M +31 (0)6 - 515 96 189
W www.morloff.nl
E contactformulier

Morloff op Twitter Morloff op Facebook Morloff op LinkedIn Morloff via RSS