2010-09-01 2 views
0

Конкретный вопрос: Does VARCHARMAPPING = Истинная работа над соединениями Ado OleDB для Visual FoxPro? и если да, то как должна выглядеть строка соединения?ADO OleDB Visual Foxpro

Мы разрабатываем приложение Delphi, которое использует части старой базы данных visual foxpro в качестве базы. Сегодня утром у меня было рабочее соединение с базой данных, которая для всех целей и целей сделала правильные вещи, но теперь их уже нет.

Вещь, которая работала, была varcharmapping, I.e. нет прокладка.

Delphi 2010, используя ADOConnection, AdoQuery. Использование Microsoft Visual FoxPro 9.0 Sp2. Если есть новые, скажите, пожалуйста.

ConnectionString выглядит следующим образом:

'Provider=VFPOLEDB.1;Data Source=C:\PROGRAMDATA\Folder\DataFolder;Collating Sequence=SWEFIN;DSN="";VARCHARMAPPING=True;' 

Я перепробовал все перестановки (хорошо чувствует, как он), что есть все атрибуты, но безрезультатно. Любые предложения очень ценятся.

ответ

1

Команда SET VARCHARMAPPING используется для определения того, как Visual Foxpro генерирует курсоры (аналогичные, но очень отличающиеся от наборов записей ADO) в приложении Foxpro. Эта команда строго влияет на указатели Foxpro и не является supported through the Visual FoxPro Ole DB provider.

Я считаю, что лучшей альтернативой является изменение ваших баз данных FoxPro для использования типа данных для столбцов типа varchar. Причиной этой проблемы является то же различие между типами данных char and varchar в SQL Server.

Шар является столбом с фиксированной шириной. Если данные в записи полностью не заполняют столбец, добавляется дополнение. Это неверно для varchar, который является поле переменной длины, и выделяет столько места, сколько требуется (т. Е. Без заполнения).

Обновление Даже при использовании типа данных varchar, заполнение can still occur. Итак, для compatibility reasons вы всегда должны урезать значения.

+0

спасибо. Это более или менее подтверждает мои подозрения. Не очень помогает, но, по крайней мере, мне становится легче, когда вы обрезаете все данные, зная, что другого пути нет. – lungic