|
Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема
|
Прочитане на Access със Querty
|
|
Автор | Mилeнa (Нерегистриран) |
Публикувано | 09.11.01 06:01 |
|
Трябва да извеждам едни справки от база данни, написани с Access 2000. И разбира се искам всичко да направя със SQL заявки (за по-лесно). Та въпросът ми е: някой правил ли е нещо подобно, и как става точно. Всякакви идеи са добре дошли.
| |
Тема
|
Re: Прочитане на Access със Querty
[re: Mилeнa]
|
|
Автор |
AquilaX (познат) |
Публикувано | 09.11.01 08:47 |
|
Ами става много лесно. Трябва да се използват ADO компонентите.
Значи слагаш си ADOQuery, задаваш му Connection String към DSN (който се създава предварително от Control Panel и сочи към Access базата ти от данни). След като си настроиш връзката ползваш AdoQuery.SQL.Text := "Заявката която ти трябва" (можеш да ползваш заявки генерирани и от самият Access), а после викаш ExecSQL, или Open методите на AdoQuery в зависимост от това дали заявката връща резултат.
Ако имаш още проблеми пиши.
AquilaX
____________
умният знае кога да говори, мъдрият знае кога да мълчи
| |
Тема
|
Re: Прочитане на Access със Querty
[re: AquilaX]
|
|
Автор | Mилeнa (Нерегистриран) |
Публикувано | 09.11.01 09:16 |
|
Това добре, обаче не искам да минавам през ODBC драйвера. Програмата ще работи с няколко бази данни от Access, разположени в различни директории, настройките на ODBC - то трябва да се правят ръчно (поне не знам как става от програмата). С една дума - ако може директно.
| |
Тема
|
Re: Прочитане на Access със Querty
[re: Mилeнa]
|
|
Автор |
AquilaX (познат) |
Публикувано | 09.11.01 14:58 |
|
е ще ти трябват някакви Native драйвери за Access. Иначе DNS се създава и програмно макар да не е толкова лесно колкото би трябвало да е т.е. от Borland не са го направили. Може да използваш следното нещо :
const
ODBC_ADD_DSN = 1; // Add data source
ODBC_CONFIG_DSN = 2; // Configure (edit) data source
ODBC_REMOVE_DSN = 3; // Remove data source
ODBC_ADD_SYS_DSN = 4; // add a system DSN
ODBC_CONFIG_SYS_DSN = 5; // Configure a system DSN
ODBC_REMOVE_SYS_DSN = 6; // remove a system DSN
type
TSQLConfigDataSource = function( hwndParent: HWND;
fRequest: WORD;
lpszDriver: LPCSTR;
lpszAttributes: LPCSTR ) : BOOL; stdcall;
function TfmUpdate.CreateMDBDSN(FileName, DSNName, Description:String):boolean;
var
pFn: TSQLConfigDataSource;
hLib: LongWord;
strDriver: string;
strHome: string;
strAttr: string;
strFile: string;
fResult: BOOL;
srInfo : TSearchRec;
begin
Result := True;
strFile := FileName;
strHome := ExtractFilePath (FileName);
hLib := LoadLibrary( 'ODBCCP32' ); // load from default path
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='+DSNName+#0+
'DBQ=%s'+#0+
'Exclusive=1'+#0+
'Description='+Description+#0+#0,
[strFile] );
fResult := pFn( 0, ODBC_ADD_SYS_DSN, @strDriver[1], @strAttr[1] );
if( fResult = false ) then Result := False;
// test/create MDB file associated with DSN
if( FindFirst( strFile, 0, srInfo ) <> 0 ) then
//strFile := '.\\TestData.MDB';
begin
strDriver := 'Microsoft Access Driver (*.mdb)';
strAttr := Format( 'DSN='+DSNName+#0+
'DBQ=%s'+#0+
'Exclusive=1'+#0+
'Description='+Description+#0+
'CREATE_DB="%s"'#0+#0,
[strFile,strFile] );
fResult := pFn( 0, ODBC_ADD_SYS_DSN, @strDriver[1], @strAttr[1] );
if( fResult = false ) then Result := False;
end;
FindClose( srInfo );
end;
(* MASSIVE SNIP *)
FreeLibrary( hLib );
end
else
begin
Result := False;
end;
end;
Успех!
AquilaX
P.S Сигурно може да използваш и OLE Automation ама мене нещо не ме кефи това а сигурно е и бавно.
____________
умният знае кога да говори, мъдрият знае кога да мълчиРедактирано от AquilaX на 09.11.01 15:01.
| |
Тема
|
Re: Прочитане на Access със Querty
[re: Mилeнa]
|
|
Автор |
Miro () |
Публикувано | 09.11.01 17:22 |
|
Hi,
По добрия варинт при ADO e да използваш Jet провайдер за директен достъп до Access, но за Access 2000 ще трябва да имаш и последните update-и от Borland. Но не очаквай голяма скорост и ще има проблеми при справки от таблици от различни бази.
Засега толкова, като имаш конкретни проблеми...
Миро.
| |
Тема
|
Re: Прочитане на Access със Querty
[re: Miro]
|
|
Автор | Mилeнa (Нерегистриран) |
Публикувано | 11.11.01 10:33 |
|
Благодаря на всички които ми отговориха. Вече всичко е ок.
| |
Тема
|
Re: Прочитане на Access със Querty
[re: Mилeнa]
|
|
Автор |
Miro () |
Публикувано | 12.11.01 12:02 |
|
Hi,
За съжаление нищо няма да е ОК с ADO !
Проблемите ти тепърва започват... но питай и може и да стане. Освен това може да следиш и newsgroup-ата на Borland за ADO - там има доста теми....
Миро.
| |
Тема
|
Re: Прочитане на Access със Querty
[re: Miro]
|
|
Автор |
Eмилиo (Вече нормален!) |
Публикувано | 12.11.01 21:30 |
|
Вярно е за проблемите с ADO аз не ги бях ползвал, но едно приятелче дето се мъчи с тях, ми разправяше какви гимнастики прави за да им избегне бъговете :)
| |
Тема
|
Re: Прочитане на Access със Querty
[re: Eмилиo]
|
|
Автор |
Miro () |
Публикувано | 13.11.01 15:59 |
|
Хммм...
Позната история . Не ме питай аз какви гимнастики правя .
Но сега правя една последна - зарязвам ADO и се прехвърлям на Interbase .
Tnx,
Miro.
| |
Тема
|
Re: Прочитане на Access със Querty
[re: Miro]
|
|
Автор |
Eмилиo (Вече нормален!) |
Публикувано | 13.11.01 17:45 |
|
:)))) Не си мисли че там няма да има хватки... по малко са но не са болка за умиране ;) Аз си бачкам на Interbase от 2-3 год, и не ми правят впечатление :)
| |
|
Страници по тази тема: 1 | 2 | >> (покажи всички)
|
|
|