Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с базой MS Access в сети 
:(
    Опции темы
AzuManga
  Дата 11.7.2005, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 12.5.2005

Репутация: нет
Всего: нет



Здравствуйте, коллеги 8))

Проблема такова - необходимо, чтобы приложение работало с файлом mdb, расположенным в сети (адрес компьютера и папка известны 8)) ). Как надо настроить ConnectionString у ADOConnection, чтобы можно было работать не только с базой, расположенной на локальном компьютере?

При попытке подключиться через Microsoft Jet OLE даже к локальной БД при первом же ADODataSet.Open возникает OLEException "Не было задано свойство, доступное только для чтения", а при закрытии приложения возникает "Неопознанная ошибка"

пример строки подключения:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\FTP_2\Dev\TestPlan\TestPlan.mdb;Persist Security Info=False


При выборе в качестве провайдера Microsoft OLE DB for ODBC Drivers можно выбрать только файлы mdb, которые находятся только на локальной машине.

Подскажите, пожалуйста выход из ситуации.
--------------------
 Точка с запятой; 
PM MAIL   Вверх
Bes
Дата 12.7.2005, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 2
Всего: 7



Я так работаю - никаких проблем. Только я АДОДатаСетом не пользуюсь даже не знаю зачем он только АДОКвери или АДОТэйбл на худой конец
PM MAIL   Вверх
AzuManga
Дата 12.7.2005, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 12.5.2005

Репутация: нет
Всего: нет



А можете написать каким провайдером Вы пользуетесь? Jet или ODBC ?
--------------------
 Точка с запятой; 
PM MAIL   Вверх
AntonSaburov
Дата 12.7.2005, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Я думаю, что проще будет работать через JET.
PM MAIL WWW ICQ   Вверх
SergeBS
Дата 12.7.2005, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



AzuManga
Берешь Фленова "Библия Delphi". Как-то так называется, хотя тянет не на библию, а на шпаргалку для двоешника. Там какая-то глава - как раз ADO+Access+растопырка пальцев как подключаться.
Хотя только за подключение через ADO к Access в изолированном от других БД приложении нужно расстреливать без права переписки: Jet это и есть Access по большому счету (движок всей СУБД).


PM MAIL   Вверх
Петрович
Дата 12.7.2005, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 6
Всего: 55



Цитата(SergeBS @ 12.7.2005, 18:04)
Хотя только за подключение через ADO к Access в изолированном от других БД приложении нужно расстреливать без права переписки: Jet это и есть Access по большому счету (движок всей СУБД).

smile


--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
YurikGL
Дата 12.7.2005, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 5.7.2005
Где: Уфа

Репутация: нет
Всего: 2



Подключение через ADO по сети происходит точно так же, как и локально... Если через JET


Цитата
Только я АДОДатаСетом не пользуюсь даже не знаю зачем он только АДОКвери или АДОТэйбл на худой конец

Вроде профи говорят, что зря так... датасет вроде лучше, а тейбл и квери сохранены только для совместимости с BDE
--------------------
 
PM MAIL WWW ICQ   Вверх
AzuManga
Дата 12.7.2005, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 12.5.2005

Репутация: нет
Всего: нет



Большое спасибо за внимание, пользуюсь Microsoft OLE DB for ODBC, просто не обнаружил второпях кнопочку Сеть.. в редакторе строки подключения 8)) Заказчик все нервы затеребил просто 8)) Никаких подводных камней тут нет 8))
--------------------
 Точка с запятой; 
PM MAIL   Вверх
Bes
Дата 13.7.2005, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 2
Всего: 7



Вот моя дфмочка - думаю этого достаточно.
Код

object Form1: TForm1
  Left = 190
  Top = 151
  BorderIcons = [biSystemMenu]
  BorderStyle = bsSingle
  Caption = 'Form1'
  ClientHeight = 87
  ClientWidth = 596
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  Position = poDesktopCenter
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object LabeledEdit1: TLabeledEdit
    Left = 8
    Top = 24
    Width = 105
    Height = 21
    EditLabel.Width = 103
    EditLabel.Height = 13
    EditLabel.Caption = 'Введите номер чека'
    LabelPosition = lpAbove
    LabelSpacing = 3
    TabOrder = 0
    OnKeyDown = LabeledEdit1KeyDown
  end
  object LabeledEdit2: TLabeledEdit
    Left = 120
    Top = 24
    Width = 65
    Height = 21
    EditLabel.Width = 60
    EditLabel.Height = 13
    EditLabel.Caption = 'Сумма чека'
    LabelPosition = lpAbove
    LabelSpacing = 3
    TabOrder = 1
  end
  object LabeledEdit3: TLabeledEdit
    Left = 192
    Top = 24
    Width = 73
    Height = 21
    EditLabel.Width = 26
    EditLabel.Height = 13
    EditLabel.Caption = 'Дата'
    LabelPosition = lpAbove
    LabelSpacing = 3
    TabOrder = 2
  end
  object LabeledEdit4: TLabeledEdit
    Left = 272
    Top = 24
    Width = 321
    Height = 21
    EditLabel.Width = 64
    EditLabel.Height = 13
    EditLabel.Caption = 'Плательщик'
    LabelPosition = lpAbove
    LabelSpacing = 3
    TabOrder = 3
  end
  object Button1: TButton
    Left = 80
    Top = 56
    Width = 75
    Height = 25
    Caption = 'Возврат'
    TabOrder = 4
    OnClick = Button1Click
  end
  object Button2: TButton
    Left = 200
    Top = 56
    Width = 75
    Height = 25
    Caption = 'Проверить'
    TabOrder = 5
    OnClick = Button2Click
  end
  object ADOConnection1: TADOConnection
    ConnectionString = 
      'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=E:\AW' +
      'ORK\ACCESS\Market\TABL_S.mdb;Mode=Share Deny None;Extended Prope' +
      'rties="";Persist Security Info=False;Jet OLEDB:System database="' +
      '";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet ' +
      'OLEDB:Engine Type=4;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:' +
      'Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;J' +
      'et OLEDB:New Database Password="";Jet OLEDB:Create System Databa' +
      'se=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don''t Copy L' +
      'ocale on Compact=False;Jet OLEDB:Compact Without Replica Repair=' +
      'False;Jet OLEDB:SFP=False'
    LoginPrompt = False
    Provider = 'Microsoft.Jet.OLEDB.4.0'
    Left = 16
    Top = 8
  end
  object ADOQuery1: TADOQuery
    Connection = ADOConnection1
    Parameters = <>
    Left = 16
    Top = 40
  end
  object ADOConnection2: TADOConnection
    ConnectionString = 
      'Provider=Microsoft.Jet.OLEDB.4.0;Password=MyPass;User ID=MyName' +
      ';Data Source=E:\AWORK\ACCESS\Market\BDK4.MDB;Mode=Share Deny Non' +
      'e;Extended Properties="";Persist Security Info=True;Jet OLEDB:Sy' +
      'stem database=\\serv\work\ACCESS.MDW;Jet OLEDB:Registry Path="";' +
      'Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=4;Jet OLEDB' +
      ':Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet' +
      ' OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Passwor' +
      'd="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Da' +
      'tabase=False;Jet OLEDB:Don''t Copy Locale on Compact=False;Jet OL' +
      'EDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False'
    LoginPrompt = False
    Provider = 'Microsoft.Jet.OLEDB.4.0'
    Left = 176
    Top = 8
  end
  object ADOQuery2: TADOQuery
    Connection = ADOConnection2
    Parameters = <>
    Left = 176
    Top = 40
  end
end


Это сообщение отредактировал(а) Bes - 13.7.2005, 08:17
PM MAIL   Вверх
Петрович
Дата 13.7.2005, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 6
Всего: 55



Цитата(Bes @ 13.7.2005, 09:13)
Вот моя дфмочка - думаю этого достаточно

Ну вот, естественно ADO+Jet



--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
SergeBS
Дата 19.7.2005, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



Петрович
Имел в виду
"Хотя только за подключение через ADO + ODBC, "
естественно - т.е. правильно:
ConnectionString =
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\D5\Access\Борей.mdb;Persist Security Info=False
или
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\room14\work\iko\ssb\Борей000.mdb;Persist Security Info=False

А если OLE DB + ODBC + Jet, то это 2 лишних звена.
Или урезание функциональности без Jet.

PM MAIL   Вверх
Петрович
Дата 19.7.2005, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 6
Всего: 55



to SergeBS
Вот теперь согласен smile.
Попутно, упрощенно, отмечу что:
Jet - "движок" обслуживания БД MSACCESS
ADO - современный интерфейс Microsoft для доступа к данным
ODBC - устаревший интерфейс Microsoft для доступа к данным. И живет он в основном для совместимости со старыми приложениями. А также для доступа к данным для которых нет драйверов доступа через ADO.

Соответственно, возможны след.варианты:
ADO -> Jet
и
ADO -> ODBC -> Jet
Понятно что последний вариант для вновь разрабатываемого приложения это нонсенс



--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0872 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.