October
|
|
1 | |
ACCESS <-> MS SQL Server12.12.2010, 12:17. Показов 4312. Ответов 20
Метки нет (Все метки)
Помогите, как засадить данные в ComboBox на форме в ACCESS из таблицы в MS SQL Server 2000 ? Связь через ADODB.Connection.
|
12.12.2010, 12:17 | |
Ответы с готовыми решениями:
20
Как настроить MS SQL Server, чтобы через Access, можно было редактировать таблицы MS SQL Server? Передача параметров из Access в ХП SQL Server - MS Access [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed- User: Reason: Not defined as a valid user of a trusted SQL Server connection |
vivi
|
|
12.12.2010, 14:33 | 2 |
Прилинковываешь таблицу или представление в Access:
Но сначала надо создать соединение ODBC: Пуск - Настройка - Панель управления - Администрирование - Источники данных ODBC. Соединение будет иметь имя. Далее в Access: окно БД - вкладка Таблицы - связь с таблицами,тип файлов выбираешь ODBS Databases и имя твоего соединения. Если хочешь чтоб прилинкованная таблица была обновляемой, надо при установлении связи указать уникальное поле. Если такого нет, то добавляешь в таблице на SQL искуственное поле счетчика. Важно! При изменении структуры таблицы на SQL связь надо принудительно обновлять. Прилинкованная таблица или представление будут иметь имя. Указываешь имя этого объекта в свойстве Источник строк элемента управления гна форме. Если надо подробнее - спросите. |
October
|
|
12.12.2010, 15:12 | 3 |
Vivi, Спасибо. Но это все сделано.И связь есть и все.
Но не могу весь список вонзить в Combobox. Или только первое значение. отрывок: ... r1.movefirst me.CBox1.value = r1!Name me.refresh Показывает только первое значение, а мне надо все. Где r1 определяется как set r1=cnn1.execute('select ...') |
vivi
|
|
12.12.2010, 15:52 | 4 |
Поскольку вопрос в ветке про Access, то уточни, пожалуйста: Клиент у тебя на чем?
|
October
|
|
12.12.2010, 15:52 | 5 |
Клиент в форме на Access.
|
vivi
|
|
12.12.2010, 16:13 | 6 |
Счас разберемся.
Что ты называешь ComboBox? Поле со списком? |
October
|
|
12.12.2010, 16:23 | 7 |
Да. Поле со списком.
Клиент на Access. |
vivi
|
|
12.12.2010, 16:33 | 8 |
Прости за мою непонятливость.
Объясни, чего ты хочешь иметь на выходе. Поле со списком имеет источник строк и предназначено для выбора и использования выбранного значения. Поле со списком присоеденено к одному полю (если результат выбора нужно хранить)или свободное, т.е. выбираемое значение не сохраняется. А вот источник строк может быть представлен обширным набором записей -много записей и несколько столбцов. У тебя проблема где? В источнике записей для раскрывающегося списка или ты хочешь результат выбора хранить в виде набора записей? |
October
|
|
12.12.2010, 16:38 | 9 |
Я хочу иметь выбор и использование выбранного значения.
Так, чтобы, Поле со списком было присоеденено к ОДНОМУ СТОЛБЦУ. ----- У тебя проблема где? В источнике записей для раскрывающегося списка или ты хочешь результат выбора хранить в виде набора записей? ---- Проблема в источнике записей. Не удается подцепить необходимый столбец таблицы на сервере к раскрывающемуся списку. |
October
|
|
12.12.2010, 16:46 | 10 |
Поясню нагляднее. Под меню форума есть поля 'Искать' и второе (раскрывающийся список), в котором высвечено 'в новостях'. Предположим, что значения для второго поля берутся с сервера (из таблицы). Каким образом мне подцепить этот элемент АктивХ - раскрывающийся список к данным в таблице на сервере ? Повторяю, что клиент, где расположен раскрывающийся список - на Access.
|
vivi
|
|
12.12.2010, 16:55 | 11 |
Тогда надо воспользоваться средствами этого элемента управления.
Задать свойства : Источник строк, число столбцов, ширину столбцов. Ничего не надо программировать! Все это элементарно делается визуальными средствами. Лучше всего воспользоваться мастером (возникает, когда рисуешь новый элемент). Если тебе надо динамически менять источник строк, ну, к примеру в зависимости от значения какого-нибудь соседнего поля, то это делается путем изменения свойств этого поля со списком в модуле формы средствами VBA - в ответ, например на событие 'после обновления' того, другого пля. Источник строк это string. Его ты и формируешь в VBA. Он имеет вид SQL-запроса 'Select .... '. В предложении FROM пишешь имя прилинкованной таблицы и о коннекте не заботишься, ибо он в этой тбл хранится. А предложение WHERE динамически формируешь. Удачи! Напиши, получилось ли. |
vivi
|
|
12.12.2010, 16:59 | 12 |
Причем здесь АктивХ? Воспользуйся родным полем со списком, который интегрирован в Access. Тут тот случай, когда не надо экзотики.
|
October
|
|
12.12.2010, 17:06 | 13 |
Я понимаю, о чем вы говорите. Но, дело в том, что здесь работа идет через Connection. Я не делаю линки таблиц. В разделе ТАБЛИЦЫ у меня не т ни одной таблицы, Все через ADODB.Connection.
В том-то и трудность. Если я сделаю линки таблиц с сервера, то при работе нескольких клиентов будет конфликт. (Правда он и так может быть, но так можно поковырять с транзакциями). |
0 / 0 / 0
Регистрация: 25.03.2010
Сообщений: 210
|
|
12.12.2010, 17:20 | 14 |
RowSource = 'SELECT ODBC_Table.FieldName from ODBC_Table;'
или я чего-то не понял?
0
|
0 / 0 / 0
Регистрация: 25.03.2010
Сообщений: 210
|
|
12.12.2010, 17:20 | 15 |
а ещё после SELECT можно вставить DISTINCT, тогда ваще ништяк бует
0
|
October
|
|
12.12.2010, 17:32 | 16 |
To: poluthene
Попробовал, но выдает сообщение, что ядро не может найти входную таблицу OLEDB_project_type. |
October
|
|
12.12.2010, 18:07 | 17 |
To: polithene
Как я понимаю, эту строку я вставил в источник строк в элементе управления. Она дает ошибку. Если вставить программно, думаю, все равно даст ошибку (причем, наверное, ту-же). |
0 / 0 / 0
Регистрация: 25.03.2010
Сообщений: 210
|
|
13.12.2010, 11:39 | 18 |
Dim db As DAO.Database
Dim tdf As DAO.TableDef Dim rst As DAO.Recordset Dim strServer As String Dim strDB As String Dim strTable As String Dim strConnect As String Dim strMsg As String strConnect = 'ODBC:driver ={SQL server}; trusted_connection=yes;' или strConnect = 'ODBC:driver ={SQL server}; UID=' < UserName > ' PWD= ' < Password > '' Set db = CurrentDb Set rst = db.OpenRecordset('tblSQLTables', dbOpenSnapshot) If rst.EOF Then strMsg = 'NO TABLES!!!' GoTo exithere End If Do Until rst.EOF strServer = rst!sqlserver strDB = rst!sqldatabase strTable = rst!sqltable Set tdf = db.CreateTableDef(strTable) tdf.Connect = strConnect & 'Server=' & strServer & 'atabase=' & strDB & ';' tdf.SourceTableName = strTable db.TableDefs.Append tdf rst.MoveNext Loop strMsg = 'tables are linked' rst.Close Set rst = Nothing Set tdf = Nothing Set db = Nothing exithere: MsgBox strMsg, , 'Linking sql tables' HandleErr: Exit Sub взято из 'Access. Сборник рецептов для профессионалов' авторы - К.Гетц, П.Литвин, Э.Берон Работает на MSO XP, возможно не будет работать на ранних версиях. Не забудь включить Tools > References > Microsoft DAO 3.6 object library Удачи
0
|
0 / 0 / 0
Регистрация: 25.03.2010
Сообщений: 210
|
|
13.12.2010, 11:41 | 19 |
забыл написать.
код этот подсоединяет ВСЕ таблицы, думаю сам разберёшся, что к чему...
0
|
October
|
|
13.12.2010, 12:32 | 20 |
Спасибо, polythene.
Попробую. Сообщу как и что. |
13.12.2010, 12:32 | |
13.12.2010, 12:32 | |
Помогаю со студенческими работами здесь
20
из access в ms sql server Ms Access + MS SQL Server MS Access + MS SQL server Перенести БД из Access в SQL Server Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |