[SQL/Access] Record wordt afgekapt

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • trekker22
  • Registratie: Maart 2003
  • Laatst online: 19-09 14:01
Ik heb een website gebouwd waar allerlei activiteiten in nederland worden gepromoot. Nu bleek er een probleem te zijn: de zoek omschrijving werd op de ene pagina goed weergegeven en op een andere pagina afgekapt.

Ik gebruik Access met ASP op een IIS server. Na zoeken bleek dat het echt aan de SQL code lag en dat uit de database ook te weinig van het record werd afgeleverd. (Probleem dus niet bij ASP maar echt bij Access).

Ik heb de gebruikte query vergeleken met een test query en daar komen ook 2 resultaten uit:

Query zoals op website:
code:
1
2
3
SELECT DISTINCT tblBEDRIJF.BEDRIJF_ID, tblBEDRIJF.BEDRIJF_NAAM, tblBEDRIJF.BEDRIJF_PLAATS, tblBEDRIJF.BEDRIJF_ZOEK_OMSCHR, tblBEDRIJF.BEDRIJF_NIET_IN_ZOEK, tblBEDRIJF.BEDRIJF_PRIO 
FROM ((((tblBEDRIJF LEFT JOIN tblBEDRIJF_ACTIVITEIT ON tblBEDRIJF.BEDRIJF_ID = tblBEDRIJF_ACTIVITEIT.BEDRIJF_ID) LEFT JOIN tblBEDRIJF_DOELGROEP ON tblBEDRIJF.BEDRIJF_ID = tblBEDRIJF_DOELGROEP.BEDRIJF_ID) LEFT JOIN tblBEDRIJF_PERSONEN ON tblBEDRIJF.BEDRIJF_ID = tblBEDRIJF_PERSONEN.BEDRIJF_ID) LEFT JOIN tblBEDRIJF_PRIJSKLASSE ON tblBEDRIJF.BEDRIJF_ID = tblBEDRIJF_PRIJSKLASSE.BEDRIJF_ID) LEFT JOIN tblBEDRIJF_PROVINCIE ON tblBEDRIJF.BEDRIJF_ID = tblBEDRIJF_PROVINCIE.BEDRIJF_ID 
WHERE (((tblBEDRIJF.BEDRIJF_NIET_IN_ZOEK)=False)) AND ((tblBEDRIJF_PROVINCIE.PROVINCIE_ID)=26) ORDER BY tblBEDRIJF.BEDRIJF_PRIO DESC , tblBEDRIJF.BEDRIJF_NAAM;


Test Query:
code:
1
2
3
SELECT tblBEDRIJF.BEDRIJF_ID, tblBEDRIJF.BEDRIJF_NAAM, tblBEDRIJF.BEDRIJF_PLAATS, tblBEDRIJF.BEDRIJF_ZOEK_OMSCHR, tblBEDRIJF.BEDRIJF_NIET_IN_ZOEK, tblBEDRIJF.BEDRIJF_PRIO_VOORPAGINA
FROM tblBEDRIJF INNER JOIN tblBEDRIJF_PROVINCIE ON tblBEDRIJF.BEDRIJF_ID = tblBEDRIJF_PROVINCIE.BEDRIJF_ID
WHERE (((tblBEDRIJF_PROVINCIE.PROVINCIE_ID)=26));


beiden queries geven precies 1 record terug maar bij er is een verschil tussen de waardes van de tupel .BEDRIJF_ZOEK_OMSCHR:


BEDRIJF_ZOEK_OMSCHR
Voor diegenen die een nieuw initiatief zoeken om hun personeelsbijeenkomsten, dealerdagen, ontspanning tijdens incentives enz. meer gestalte te geven, is een Highland Game bij uitstek die sportieve uiting die zowel heerlijk is om aan deel te nemen, als fa

BEDRIJF_ZOEK_OMSCHR
Voor diegenen die een nieuw initiatief zoeken om hun personeelsbijeenkomsten, dealerdagen, ontspanning tijdens incentives enz. meer gestalte te geven, is een Highland Game bij uitstek die sportieve uiting die zowel heerlijk is om aan deel te nemen, als fascinerend om naar te kijken!

Ik heb het resultaat in Word geplakt en de afgekapte variant blijkt precies 255 tekens te hebben, misschien zorgt dit voor de fout? Veld zelf is een Memo veld, maar misschien ziet die dit als een max 255 teken resultaat??
(Al de joins worden gemaakt om verschillende criteria aan elkaar te plakken, als prijs, aantal mensen, provincie etc etc).

Iemand een idee, want ik zie geen structurele verschillen in de queries!

ACC2000: Formatted Memo Field Appears to Truncate Data After 255 Characters
deze KB geeft wel een kleine hint, maar ik zie niet in dat ik "formating" toepas!

EDIT
zelf nog wat goede Google zoektermen kunnen gebruiken en het ligt hier aan:
http://allenbrowne.com/ser-63.html
Uniqueness Since you asked the query to return only distinct values, Access must compare the memo field against all other records. The comparison causes truncation.

Open the query's Properties Sheet and set Unique Values to No. (Alternatively, remove the DISTINCT key word in SQL View.)

You may need to create another query that selects the distinct values without the memo, and then use it as the source for another query that retrieves the memo without de-duplicating.

Ligt kennelijk aan DISTINCT
Is de Query te herbouwen zodat het meteen werkt, of zal ik gewoon een 2e query pakken en die nog even het Memo veld laten op halen?

[ Voor 13% gewijzigd door trekker22 op 11-05-2009 11:56 ]


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Ik zie een SELECT DISTINCT in plaats van SELECT. Ik weet niet of Access daar problemen mee heeft, maar ik weet wel dat SQL Server het niet toestaat op Memo velden.

Waarom gebruik je uberhaupt een select distinct? In mijn ervaring worden select distincts vaak gebruikt om slechte queries toch een goed resultaat te laten teruggeven.

[ Voor 34% gewijzigd door bigbeng op 11-05-2009 12:00 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Hij kapt precies op 255 tekens af. Dergelijke hoeveelheden (2^8 -1) zijn vaak een belangrijke indicator van bepaalde (stille) truncate methoden. Wat bigben hierboven zegt lijkt me dan een heel voor de hand liggende verklaring.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

bigbeng schreef op maandag 11 mei 2009 @ 11:57:
Ik zie een SELECT DISTINCT in plaats van SELECT. Ik weet niet of Access daar problemen mee heeft, maar ik weet wel dat SQL Server het niet toestaat op Memo velden.
Access en SQL Server gebruiken beiden Transact SQL voor zover ik weet, dus alles dat in SQL Server bokt doet dat ook in Access. Overigens krijg je daar in SQL Server ook geen melding voor voor zover ik weet; ben er recent zelf nog eens tegenaan gelopen dat de database mijn text-veld truncatete in een vergelijkbare situatie.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Vziw heeft Access Jet-SQL en SQL Server T-SQL. Ik heb zeer recent nog een melding van SQL Server gehad dat je geen distinct mag doen:
The text data type cannot be selected as DISTINCT because it is not comparable.

Dus. :)