Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.08;
Скачать: CL | DM;

Вниз

Vista + TDBGridEh + MsAccess текстовое поле   Найти похожие ветки 

 
Sergey2   (2009-09-24 10:01) [0]

в приложении вешаю TDBGridEh. база находится в аццессе. делаю селект по полям одно из которых тектовое размерностью 255.
Запускаю приложение на XP работает - все отлично отображается. Запускаю на висте. Всё то текстовое поле в гриде все записи вместо значений пишется [Memo].
Использую TADOConnection. Алиасы создаю в ODBC.
В чем проблема может быть?


 
Медвежонок Пятачок ©   (2009-09-24 10:22) [1]

проблема в разных драйверах акцесса


 
Sergey2   (2009-09-24 10:33) [2]

на XP и Vista офис ставился с одного и того же дистрибутива - 2003 Office


 
Медвежонок Пятачок ©   (2009-09-24 10:36) [3]

и чего?


 
Медвежонок Пятачок ©   (2009-09-24 10:36) [4]

и причем здесь офис?


 
Sergey2   (2009-09-24 10:52) [5]

Ну не знаю причём. логично предположить что "драйвера акцесса" устанавливаются на систему непосредственно при установки оффиса, в котором этот акцесс и живет.
Офис один и тот же. поидее и дрова при установки должны были одни и теже проинсталлироваться.
По крайней мере никаких аццесовских дров я никуда не ставил.
По твоей логике какие то дрова должны уже жить в системе....


 
Медвежонок Пятачок ©   (2009-09-24 10:54) [6]

логично предположить что "драйвера акцесса" устанавливаются на систему непосредственно при установки оффиса

Ну если это логично, то снеси офис и запусти программу на делфи.
И посмотри что будет.
Либо запусти программу на чистой машине до установки офиса.

Поймешь откуда в системе берется драйвер акцесса.


 
Медвежонок Пятачок ©   (2009-09-24 10:56) [7]

Офис один и тот же. поидее и дрова при установки должны были одни и теже проинсталлироваться.

Вовсе не должны и не обязаны. Хотя к проблеме это не имеет отношения.
Проблема в том, что один драйвер акцесса трактует поле как ftString, а второй драйвер как ftMemo


 
Sergey2   (2009-09-24 11:03) [8]

ммм - убедительно. спасибо.
тогда вопрос остаётся в том, что это за драйвера.
Драйвер Microsoft Data Access Components (MDAC) - это они и есть ?


 
sniknik ©   (2009-09-24 11:03) [9]

> что один драйвер акцесса трактует поле как ftString, а второй драйвер как ftMemo
скорее это не сам драйвер, а ODBC-шная надстройка, т.к. если бы было по другому то у меня наверняка уже были бы жалобы на проги в висте, т.к. поля по 255 в них есть. а так как жалоб нет, что чего то не видно, то либо ODBC (т.к. не использую) либо мне очень везет.


 
Медвежонок Пятачок ©   (2009-09-24 11:05) [10]

это они и есть ?

кто же знает, что там у тебя в строке коннекта указано


 
Sergey2   (2009-09-24 11:10) [11]

я знаю, что указано


function CreateODBCDriver(fail_name, driver_name: string): Boolean;
var
 pFn: TSQLConfigDataSource;
 hLib: LongWord;
 strDriver, strAttr: string;
 fResult: BOOL;
 srInfo: TSearchRec;
begin
 Result := True;
 hLib := LoadLibrary("ODBCCP32");
 if (hLib <> NULL) then
 begin
   @pFn := GetProcAddress(hLib, "SQLConfigDataSource");
   if (@pFn <> nil) then
   begin (* force (re-)create DSN *)
     strDriver := "Microsoft Access Driver (*.mdb)";
     strAttr := Format("DSN=" + driver_name + #0 +
       "DBQ=%s" + #0 +
       "Exclusive=0" + #0 +
       "Description=" + driver_name + " DSN" + #0 + #0,
       [fail_name]);
     fResult := pFn(0, ODBC_ADD_SYS_DSN, @strDriver[1], @strAttr[1]);
     if (fResult = false) then
     begin
       ShowMessage("Create DSN (Datasource) failed!");
       Result := False;
       Exit;
     end;
   end;
   FreeLibrary(hLib);
 end
 else
 begin
   ShowMessage("Unable to load ODBCCP32.DLL");
   Result := False;
 end;
 Result := fResult;
end;



 
Sergey2   (2009-09-24 11:14) [12]

ну и сам коннекшн стринг получается вот такой



Provider=MSDASQL.1;Password=***;Persist Security Info=True;Data Source=***;Extended Properties="DSN=***;DBQ=C:\***.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;PWD=***;"



 
Медвежонок Пятачок ©   (2009-09-24 11:17) [13]

я бы не использовал одбс, а использовал jet. это прямее.
второе.
я бы не использовал дсн, так как это вообще странно (как и алиасы бде)

то есть: надо сказать программе где находится файл данных. и вместо того, что бы хранить и читать этот параметр в собственных настройках программы, мы ей зачем-то говорим: сходи в системную конфигурацию, и прочитай настройки соединения там.

ты же например не хранишь свои настройки на сервере пентагона. верно?


 
Anatoly Podgoretsky ©   (2009-09-24 11:47) [14]

Нафига ODBC что бы побольше и подольше помучаться?


 
Sergey2   (2009-09-24 11:52) [15]

о как... сейчас переделаю - потестю. столько лет под одбс проработала...
спасибо


 base := "\\server\***.mdb";
 if not FileExists(base) then
 begin
   Application.MessageBox(PChar("Файл базы данных не найден"),"Ошибка",MB_ICONSTOP);
   Application.Terminate;
 end;

 DM.ADOConnection1.ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0;"+
   "Data Source=" + base + ";Persist Security Info=False;Jet OLEDB:Database Password=***";
 DM.ADOConnection1.Connected := True;



Страницы: 1 вся ветка

Текущий архив: 2009.11.08;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
15-1252345693
oldman
2009-09-07 21:48
2009.11.08
Поиск и группировка файлов по "тэгам"


9-1183139502
CMOS
2007-06-29 21:51
2009.11.08
Организация OnClick у спарйта?


2-1253620987
kate158
2009-09-22 16:03
2009.11.08
поиск ячеек по excel файлам


2-1253123104
GlowSolnce
2009-09-16 21:45
2009.11.08
TADOQuery + Access + Delete


1-1221328691
ПЗ
2008-09-13 21:58
2009.11.08
Классы в DLL на Delphi и MSVC++ (бой продолжается)...