|
|
|
| В статье
http://hiprog.com/index.php?option=com_content&task=view&id=251661555&Itemid=35
очень подробно описано, как связать таблицы двух БД Access.
А как тот же трюк проделать с субж?
Пытался делать так на Дельфи
procedure TfSdachaAdd.LinkTables(ConnectStr: String);
var
TableNames: TStrings;
i,s:Integer;
tabl, cat: OLEVariant;
begin
cat:=CreateOleObject('ADOX.Catalog');
tabl:=CreateOleObject('ADOX.Table');
cat.ActiveConnection:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DCTempConnStr;
tabl.ParentCatalog:=cat;
tabl.Name:='work_T_Deliveri_Bill';
tabl.Properties['Jet OLEDB:Link Provider String'].Value:='DSN=PRODUCTIVE;APP=Microsoft Office 2003;WSID=1715W;DATABASE=WORK;AutoTranslate=No;Trusted_Connection=Yes';
tabl.Properties['Jet OLEDB:Remote Table Name'].Value:='tech.T_Deliveri_Bill';
tabl.Properties['Jet OLEDB:Create Link'].Value:=True;
cat.Tables.Append(tabl);
....
,
но на строке cat.Tables.Append(tabl); подучал ошибку, что MicrosoftJet не может определить сервер ISAM...
Замена tabl.Properties['Jet OLEDB:Link Provider String'].Value на tabl.Properties['ODBC OLEDB:Link Provider String'].Value ни к чему, кроме ошибки не привели.
Что делать? Руками из БД - никаких проблем, программно - болт!!! | |
|
| |
|
|
|
|
| Да, спасибо там все просто оказалось:
tabl:=CreateOleObject('ADOX.Table');
tabl.ParentCatalog:=cat;
tabl.Name:='work_T_Delivery_Bill';
tabl.Properties['Jet OLEDB:Link Provider String'].Value:='ODBC;Driver={SQL Server};DATABASE=WORK;'
+'SERVER='+MainForm.Serv+';Trusted_Connection=Yes;';
//'ODBC;DSN=PRODUCTIVE;DATABASE=WORK;Trusted_Connection=Yes;'; Можно и так...
tabl.Properties['Jet OLEDB:Remote Table Name'].Value:='tech.T_Delivery_Bill';
tabl.Properties['Jet OLEDB:Create Link'].Value:=True;
cat.Tables.Append(tabl);
tabl:=NULL; | |
|
| |