Jump to content
  • 0

Filemaker (Server) als Linked Server in SQL-Server (2000)


martinh

Question

Posted

Ik moet Filemaker als een linked server kunnen gebruiken vanuit SQL-Server (2000). Het maken van een connectie lukt. Ik maak gebruik van de DataDirect 5.4 ODBC Driver hiervoor.

 

Wanneer ik nu een query maak waarin een Filemaker Text-veld zit, dan krijg ik de volgende error:

 

Server: Msg 7341, Level 16, State 2, Line 1

Could not get the current row value of column

'[MSDASQL].fld_articleoption1' from the OLE DB provider 'MSDASQL'.

[OLE/DB provider returned message: Requested conversion is not supported.]

OLE DB error trace [OLE/DB Provider 'MSDASQL' IRowset::GetData returned 0x80040e1d].

 

Wanneer ik een query maak zonder een Text-veld (dus alleen getallen en datums), dan krijg ik wel netjes een resultaat terug. Dit is mijn query:

 

select * from openquery(FM, 'SELECT id_article, fld_articleoption1 FROM Articles WHERE id_article < 97')

 

Ik heb het vermoeden dat het iets te maken heeft met het feit dat Text-velden geen specifieke lengte hebben en dat SQL daar wat moeite mee heeft. Als ik echter de 'Maximum number of characters' invul op het 'Validation' tab binnen Filemaker, dan heeft dat ook geen effect.

 

Ook vreemd is dat wanneer ik een Data Transformation Service (DTS) gebruik in SQL-Server en ik maak een transformatie van Filemaker naar SQL-Server, dat dan wel de records overgeheveld worden. Je zou toch verwachten dat dit dan ook fout zal gaan. Echter DTS is voor mijn problematiek geen oplossing; ik moet een Stored Procedure maken.

 

Ik zie de betreffende foutmelding ook af en toe op het internet, maar niemand heeft een oplossing.

 

Is er iemand die reeds eerder tegen dit probleem aangelopen is en wellicht de oplossing heeft voor deze situatie? Ik vermoed wellicht ergens een instelling, maar waar ....

 

Ik hoor graag.

 

Martin

6 answers to this question

Recommended Posts

  • 0
Posted

Hallo Martin,

 

Het is mij niet helemaal duidelijk wat je bedoelt met "zonder en met FileMaker tekstveld". Zou je de verschillende queries willen laten zien?

 

De query die jij hier boven beschrijft, zit vreemd in elkaar. Dit lijkt er meer op:

 

Wanneer id_article een nummer is:

SELECT id_article, fld_articleoption1 FROM Articles WHERE id_article < 97 of

SELECT * WHERE id_article < 97

 

Wanneer id_article tekst is:

SELECT id_article, fld_articleoption1 FROM Articles WHERE id_article < '97' of

SELECT * FROM Articles WHERE id_article < '97'

 

Groet,

 

Mark

  • 0
Posted

Beste Mark,

 

Hierbij op verzoek wat meer uitleg:

 

SELECT id_article, fld_articleoption1 FROM Articles

WHERE id_article < 97

 

id_article is een Numeric/Getal veld in Filemaker

fld_articleoption1 is een Text veld in Filemaker

 

Wanneer ik nu alleen het numerieke veld opvraag (met datum velden gaat het ook goed):

 

SELECT id_article FROM Articles

WHERE id_article < 97

 

dan krijg ik netjes records terug:

 

id_article

-----------

1

3

5

11

 

Wanneer ik een Text-veld opneem in mijn query (de WHERE is niet van belang):

 

SELECT fld_articleoption1 FROM Articles

 

dan krijg ik de genoemde foutmelding.

 

Ergens lijkt de vertaling van Filemaker type Text naar SQL-Server niet helemaal goed te lopen. Aangezien ik Filemaker als een linked server in SQL-Server heb opgenomen, gebruik ik de Query Analyzer van SQL-Server om deze query uit te voeren. Dat moet ik ook wel, want uiteindelijk moet ik een join maken tussen een tabel uit SQL-Server en een tabel uit Filemaker. Dat lukt op zich wel, zolang ik geen Text-velden gebruik en dat is nu juist ook wel de bedoeling.

 

Hopelijk is het hiermee wat verduidelijkt.

 

Met vriendelijke groet,

 

 

Martin

  • 0
Posted

Ook met de DataDirect driver 5.5 treedt dezelfde fout op

En ook met SQL-Server 2005 treedt dezelfde fout op

 

OLE DB provider "MSDASQL" for linked server "fm55" returned message "De gevraagde conversie wordt niet ondersteund.".

Msg 7341, Level 16, State 2, Line 1

Cannot get the current row value of column "[MSDASQL].fld_articleoption1" from OLE DB provider "MSDASQL" for linked server "fm55".

 

Lijkt er dus meer en meer op dat het probleem eerder aan de Filemaker kant gezocht moet worden, maar waar ..... ?

  • 0
Posted

Na lang zoeken heb ik de oplossing gevonden :P :

 

Neem het volgende stuk op in de connectionstring/providerstring:

 

LCCS=999

 

waarbij 999 de maximale kolomlengte is.

 

Zie onderstaand stuk uit een gevonden document:

 

2.1. Importing large numbers of records (hundreds or thousands) from FileMaker into Microsoft Word can be very slow. You can improve import performance by limiting the size of the static cursor used by Microsoft

Word. When you configure the import with the Data Connection Wizard, edit the connection string in the Data Link Properties dialog to include the LimitCursorColumnSize property. The value of LimitCursorColumnSize is used as a precision limit on every column. If data in a column exceeds this limit, he data will be truncated. Example: if you add “;LCCS=50” to the end of the connection string (without quotation marks), Microsoft Word will import the first 50 characters of each column.

  • 0
Posted

Goed dat je het gevonden hebt!

 

Ik zat in eerste instantie te denken aan een onjuiste query of de DataDirect driver...

 

Groet,

 

Mark

  • 0
Posted

De query was wel goed.

Ik dacht ook aan de driver of aan een bepaalde setting in Filemaker

Kwam er bij toeval achter.

In de books online van DataDirect komt deze setting niet voor

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...