![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]проблема в разных драйверах акцесса