Форум: "Начинающим";
Текущий архив: 2009.11.08;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c