Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Vista + TDBGridEh + MsAccess текстовое поле [D7, XP]


Sergey2 ©   (2009-09-24 10:01:00) 

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


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

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


 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;


Anatoly Podgoretsky   (2009-09-24 11:47:00) [2]

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


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

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

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

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


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

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



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=***;"


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

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


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;


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

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

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


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

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


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

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


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

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

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


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

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

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

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


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

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


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

и чего?


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

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


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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо