Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Что такое источник данных для Microsoft Query

Здравствуйте.

Правильно я представляю схему при использовании программы "Microsoft Query":?
база данных (например, excel-файл) - программа ODBC (она же называется "источник данных") - программа "Microsoft Query" - программа, в которую нужно вставить данные из базы данных (например, Excel).
Ответ: Да, в качестве источника данных для MS Query указывается предварительно настроенный источник данных ODBC. Если мы выбираем пункт меню "Создать запрос", то высвечивается список этих самых настроенных источников.
Вопрос: Ввод в запрос поля с другим источником данных

Здравствуйте еще раз, подскажите пожалуйста, как можно в примечании ленточной формы создать поле имеющее другой источник данных нежели сама форма?

Пытаюсь ввести в источнике данных этой формы, поле - "Стоимость": указывая источником запрос Цена .
Стоимость: ("СтоимостьУслуги";"Цена") пишет ошибку, как мне правильно нужно сделать, подскажите пожалуйста.
В таблице(источник запроса "Цена") одно значение всего по сути. Спасибо
Ответ:
Сообщение от Braser
как можно в примечании ленточной формы создать поле имеющее другой источник данных нежели сама форма?
Например, использовать Dlookup
Visual Basic
1
=Dlookup("СтоимостьУслуги";"Цена")
В третьем параметре функции можно задать фильтр. Но если, как Вы пишете, в т.Цена всего одна запись, то фильтр не требуется
Вопрос: Не найден источник данных ODBC

Здравствуйте.

У меня есть приложение которое должно взаимодействовать с сервером по средствам коннектора ODBC, приложение 32 битное, использует коннектор 3-его поколения (точнее инстанцию драйвера MySQL ODBC 3.51 Driver через файл myodbc3.dll).

Для создания пользовательского DSN используется такой .reg файл:

REGEDIT4

[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\DBInstructor]
"SERVER"="100.100.100.4"
"DATABASE"="dbinstructor"
"CHARSET"="cp1251"
"UID"="instructor"
"PWD"="bycnhernjh"
"Driver"="C:\\Program Files (x86)\\MySQL\\Connector ODBC 3.51\\myodbc3.dll"
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources]
"DBInstructor"="MySQL ODBC 3.51 Driver"



путь в нем я менял в зависимости от расположения файла myodbc3.dll.
После установки коннектора и создания DSN приложение не запускается.

При попытке настроить созданный DSN вручную, два сообщения вподряд
1:
Администратор Microsoft ODBC
Не удается найти программы установки для драйвера ODBC MySQL ODBC 3.51 Driver. Переустановите драйвер.

2:
Ошибка ConfigDSN, ConfigDriver или ConfigTranslator для драйвера
В указанном DSN архитектура драйвера и архитектура приложения не соответствуют друг другу.


При попытке подцепиться к базе программным методом по средствам ODBC коннектора:
Код C#
1
2
3
4
5
........
 OdbcConnection connection = new OdbcConnection(ConnStr);
            try
            {connection.Open();}
..........
Ошибка такая:
{"ERROR [IM002] [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию"}
Коннектор ставил скачанный с офф сайта.

Может ли разрядность повлиять на работу этой системы?
Какие возможные причины таких ошибок коннектора ?
Должен ли драйвер коннектора быть указан во вкладке драйверов Администратора источников данных ODBC ?
Ответ: При Входе в Администратор источников данных ODBC получаю предупреждение:

Предупреждение системного DSN для ODBC
Вход в систему выполнен не с правами администратора. Не удалось создать или изменить системные DSN.

может ли это быть взаимосвязано?
Вопрос: Изменить источник данных в сводной таблице без ее обнуления

Как можно изменить источник данных в сводной таблице (access 2010) программно, но при этом чтобы таблица не обнулилась.
Пробую делать так: Me.Form.[подчиненнаясводнаятаблица].Form.RecordSource = "нужныйисточник"
Но сводная таблица после этого становится пустой.
Сразу скажу, источники имеют одинаковые поля и структуру. Различные лишь условия.
И если я изменяю в форме со сводной таблицей источник данных вручную, то ничего не сбрасывается и я вижу нужные данные.

Как решить проблему?
Ответ: Интересующийся333,
Если правильно понял и без примера, фиг его знает чё и как там у вас, но я всегда после изменения источника записей обновляюсь, типа
Me.Refresh
или
Me.Requery
или если это подформа. то
Me.[ИмяПодчФормы].Form.Refresh
или
Me.[ИмяПодчФормы].Form.Requery
Всё зависит от конкретной ситуации, иногда приходится и то и другое прописывать одновременно.
Вопрос: как лучше менять источник данных для формы? ...

Подзабыл уже VBA и Access...
На скорую руку творю трафик-следилку: TMeter пихает пакеты в sql server, а базка в Эксесе подключается к скулю и...анализирует, короче.
В формочке сделал группу переключателей: "Всего", "За сегодня", "За заданный период".
Источником данных для формы является сейчас запрос qryTotal для варианта "Всего":
SELECT qryPackets.src_ip, qryPackets.bytes_recv, dbo_users.fio AS [user], dbo_users.tel AS phone, dbo_hosts.host_name
FROM qryPackets LEFT JOIN (dbo_users RIGHT JOIN dbo_hosts ON dbo_users.host_id = dbo_hosts.id) ON qryPackets.src_ip = dbo_hosts.ip
ORDER BY qryPackets.bytes_recv DESC;
(ну а qryPackets просто выдает уже подсчитанные принятые мегабайты для каждого src_ip:
SELECT dbo_packets.src_ip, Sum(dbo_packets.recv)/(1024*1024) AS bytes_recv
FROM dbo_packets
GROUP BY dbo_packets.src_ip
HAVING (((Sum(dbo_packets.recv))>0))
ORDER BY 2 DESC;
)

Для варианта "За сегодня", соответственно, в qryPackets требуется наложить условие:
WHERE (dbo_packets.ts Between Date() And Now())
(ну а для варианта "За период" - то же самое, только вместо date и now - заданные даты).

Так вот, не могу сообразить, что прописать в процедуре AfterUpdate для группы переключателей:
Private Sub grpPeriod_AfterUpdate()

If grpPeriod = 1 Then

ElseIf grpPeriod = 2 Then

ElseIf grpPeriod = 3 Then

End If

End Sub

Первое, что напрашивается - создать и сохранить еще два запроса: qryPacketsForDates - к qryPackets добавить WHERE:
SELECT dbo_packets.src_ip, Sum(dbo_packets.recv)/(1024*1024) AS bytes_recv
FROM dbo_packets
WHERE (dbo_packets.ts Between Date1 And Date2)
GROUP BY dbo_packets.src_ip
HAVING (((Sum(dbo_packets.recv))>0))
ORDER BY 2 DESC;
- и еще один запрос-источник данных для формы qryTotalForDates (от имеющегося qryTotal отличается тем, что соединяется с qryPacketsForDates )

Ну и рулить свойством RecordSource для формы.

Но что-то мне подсказывает, что можно как-то обойтись без лишних запросов...Поделитесь, кто может предложить решение получше???
Ответ: DEugeneV,

Запрос может быть один, после обновления переключателя - обновить источник формы

К сообщению приложен файл. Размер - 26Kb
Вопрос: Grid+разные типы источников данных в одном столбце (DynamicCurrentControl)

Доброй ночи!
Отображаю в гриде в одном столбце данные разных типов.
Источник данных - курсор c_att_objects2 (получаемый из курсорадаптера)

Поскольку хранить данные разных типов в одном столбце нельзя - храню их в разных.
И меняю в DynamicCurrentControl столбца источник CurrentControl и ControlSource.

c_att_objects2.att_def_c -- Символьный
c_att_objects2.att_def_d -- Дата
c_att_objects2.att_def_n -- Числовой
c_att_objects2.att_def_l -- Логический

В Ините формы:

thisform.grdMain.column8.DynamicCurrentControl = 
"ThisForm.TextDef(c_att_objects2.att_data_type_fox)"

Где att_data_type_fox: C,D,N,L

ThisForm.TextDef

LPARAMETERS tcCurrentControl

this.grdMain.Column8.CurrentControl = IIF(INLIST(tcCurrentControl,'C','D','N','L'),;
ICASE(tcCurrentControl = 'C','Text1',;
tcCurrentControl = 'D','Text2',;
tcCurrentControl = 'N','Text3',;
tcCurrentControl = 'L','Check1'),;
'Text1') 

	DO CASE
		CASE this.grdMain.Column8.CurrentControl = 'Text1'
				this.grdMain.Column8.ControlSource = 'c_att_objects2.att_def_c'

		CASE this.grdMain.Column8.CurrentControl = 'Text2'
				this.grdMain.Column8.ControlSource = 'c_att_objects2.att_def_d'

		CASE this.grdMain.Column8.CurrentControl = 'Text3'
				this.grdMain.Column8.ControlSource = 'c_att_objects2.att_def_n'

		CASE this.grdMain.Column8.CurrentControl = 'Check1'
				this.grdMain.Column8.ControlSource = 'c_att_objects2.att_def_l'
	ENDCASE
RETURN (m.tcCurrentControl)


Text1.Value = ""
Text2.Value = {}
Text3.Value = 0.00
Check1.Value = 0

Все 4 встроены в столбец грида

Все работало замечательно, пока не добавил последний, логический тип.
С отображением текстбоксов проблем никаких нет, но вот с чекбоксом прям засада.

Не хотят они в паре работать.
При добавлении в c_att_objects2 через APPEND BLANK
Ругается на Check1 - ошибочный тип данных и все, привет.
От Dynamic остается одно воспоминание.

Причем сразу после APPEND я делаю.

replace att_data_type_fox WITH 'C',att_def_c WITH "",att_def_d WITH {},att_def_n WITH 0.00,att_def_l WITH 0


Такое ощущение, что DynamicCurrentControl отрабатывает сразу после APPEND.
Но тогда почему все в порядке с Text1? Поставил Text вместо Check1 - работает.
Но хочется видеть не 0 или 1 в столбце, а галочку.

Заранее спасибо.
Ответ: Ошибок тут нет.

Вот и задача в этом - в одном столбце показать РАЗНЫЕ типы данных.
Собственно, я поборол.

Чекбокс поместил в контейнер.

LPARAMETERS tcCurrentControl,tcCurrentControlEnabled

this.grdMain.Column8.CurrentControl = ''
this.grdMain.Column8.ControlSource = ''

this.grdMain.Column8.CurrentControl = IIF(INLIST(tcCurrentControl,'C','D','N','L'),;
ICASE(tcCurrentControl = 'C','Text1',;
tcCurrentControl = 'D','Text2',;
tcCurrentControl = 'N','Text3',;
tcCurrentControl = 'L','Ocontgrid'),;
'Text1') 

	DO CASE
		CASE this.grdMain.Column8.CurrentControl = 'Text1'
				this.grdMain.Column8.ControlSource = 'c_att_objects2.att_def_c'

		CASE this.grdMain.Column8.CurrentControl = 'Text2'
				this.grdMain.Column8.ControlSource = 'c_att_objects2.att_def_d'

		CASE this.grdMain.Column8.CurrentControl = 'Text3'
				this.grdMain.Column8.ControlSource = 'c_att_objects2.att_def_n'

		CASE this.grdMain.Column8.CurrentControl = 'Ocontgrid'
				this.grdMain.Column8.Ocontgrid.check1.ControlSource = 'c_att_objects2.att_def_l'

	ENDCASE
RETURN (m.tcCurrentControl)
Вопрос: Источник данных для Диаграммы

Добрый час! Диаграмма создана в форме

Источник данных вот такой и все работает
TRANSFORM Sum([Count-Nazvanie_gosudarstva]) AS [Сумма_Count-Nazvanie_gosudarstva] SELECT [UG] FROM [sql_KolichestvoGosudarstvTotal]   GROUP BY [UG] PIVOT [UG];


Диаграмма строилась на основе следующего запроса
SELECT Count(sql_KolichestvoGosudarstv.Nazvanie_gosudarstva) AS [Count-Nazvanie_gosudarstva], sql_KolichestvoGosudarstv.UG
FROM sql_KolichestvoGosudarstv
WHERE (((sql_KolichestvoGosudarstv.Data_nachala_obucheniya)>=#1/1/2017#) AND ((sql_KolichestvoGosudarstv.Data_okonchaniya_obucheniya)<=#12/31/2019#))
GROUP BY sql_KolichestvoGosudarstv.UG;


Мне необходимо менять даты для выборки значений
вот такой код использую
 strSQL = "TRANSFORM Sum([Count-Nazvanie_gosudarstva]) AS [Сумма_Count-Nazvanie_gosudarstva]  " & _
              "SELECT [UG] FROM [sql_KolichestvoGosudarstvTotal]" & _
              "WHERE (((sql_KolichestvoGosudarstv.Data_nachala_obucheniya) >= #1/1/2017#) And ((sql_KolichestvoGosudarstv.Data_okonchaniya_obucheniya) <= #12/31/2019#))  " & _
              "GROUP BY [UG] PIVOT [UG];"
    
    Me.d_KolichestvoGosudarstvTotal.RowSource = strSQL


Выдает ошибку ((( Подскажите как сделать условия в для источника данных в диаграмме?
Ответ: Но зато понятно, что каждая таблица и поле означают.
Вопрос: Где вкладка "Источник данных компьютера" в панели ODBC?

Народ, привет!

Операционка Windows XP

Такой вопрос:
Присоединяю таблицу в Microsoft Access 97. Выскакивает стандартное виндовое окно для выбора источника ODBC, где в закладке "Источник данных компьютера" я, или выбираю уже готовый источник, или создаю новый. Таблица присоединятся. Затем я могу зайти в "Панель управления" Windows - Администрирование/Источник данных (ODBS), где в закладке "Пользовательский DSN" я могу увидеть свои созданные источники. Могу редактировать их, удалять, создавать новые. Тут все нормально. Но теперь, собственно, мой вопрос. Запускаю Microsoft Access 2007 и так же присоединяю таблицу. И сразу вижу, что в стандартной виндовой закладке "Источник данных компьютера" нет моих ранее созданных источников. Ну, ладно, думаю. Жму на кнопку "Создать", создаю соединение и присоединю таблицу. Казалось бы, все нормально. Но вот мне потребовалось изменить этот созданный источник ODBC. Лезу в "Панель управления" Windows - Администрирование/Источник данных (ODBS), где в закладке "Пользовательский DSN" Я НЕ ВИЖУ своего созданного источника!!! Там сидят только прежние источники. Нового источника нет. Так и не смог его нигде найти. Даже в реестре Windows его нет! Получается, что Microsoft Access 97 использует один набор источников ODBC, которые можно замечательно редактировать, удалять (даже через виндовый реест), а Microsoft Access 2007 использует какой-то другой набор источников ODBC, который я так и не смог нигде найти.

Вот и мой основной вопрос, где создаются и сохраняются эти самые "Источники дынных ODBC" в Microsoft Access 2007?

Смысл в том, что невозможно что-то исправить или удалить. Каждый раз приходится создавать новый источник, с новым именем. Список их растет, как снежный ком. Искал в самом Access, смог найти только название иточников в файле ODBC.INI, но не их содержимое. :(
Ответ: Та же самая заковыка возникла у меня и с версией Microsoft Access 97 Portable. Все в точности, как и с версией Microsoft Access 2007 Portable.

В общем, разобрался я, где сохраняются "Пользовательские DSN" драйвера ODBC. Для версии Microsoft Access 97 Portable путь этот:
c:\Users\СЛАВИК\AppData\Roaming\Thinstall\Microsoft Office 97, профессиональный выпуск
Папка "Microsoft Office 97, профессиональный выпуск" создается в первый запуск Access 97 и ТОЛЬКО там начинают сохранятся все настройки ODBC. В том числе, там же создается и свой эмулятор виндового реестра. То есть, если наша база Access каким образом работаем реестром, то работает она будет не с виндовым реестром, а со своим собственным. Иными словами обе версии Portable Access-ов никоим образом к Windows не обращаются, а пишут все настройки в свои собственные каталоги. Чтобы убить эти настройки, в том числе и "Пользовательские DSN" ODBC, достаточно просто убить или переименовать эти каталоги. И все...

Аминь!
Вопрос: SSIS. Источник данных не найден и не указан драйвер, используемый по умолчанию

Коллеги, помогите плиз. Собираю простую ETL "перевалки" данных из Firebird (x32 2.5) в MS SQL 2008 (x64) под SSIS

Собрал ODBC источник (x32), в Excel данные Firebird через этот источник вижу, все ок
Собрал мастером пакет. В SSIS в preview внутри шага Data flow в источнике тоже вижу данные Firebird-а

Запускаю на исполнение:

[Source - Query [1]] Error: System.Data.Odbc.OdbcException: ERROR [IM002] [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
в System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
в System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle)
в System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, OdbcConnectionString connectionOptions)
...

ConnectionString в датасорсе источника - "Dsn=FBODBCNAME;"
ConnectionManagerTypee - ADO.NET:System.Data.Odbc.OdbcConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Артем
Ответ: Спасибо, вопрос всецело раскрыт )
Вопрос: Смена запроса как источника данных формы

Приветствую
Для смены источника данных - таблицы для формы используется такая конструкция:
PureBasic
1
Me.[Название формы получателя].Form.RecordSource = Me.Источник названий таблиц.Column(0)
Как вместо таблиц источников использовать названия запросов на базе этих таблиц?
То есть указать что данные для формы брать не из таблиц а из разных запросов (по имени запроса разумеется)?

Я что то не нахожу такой вариант.
Ответ:
начинаешь сомневаться в правильности кода
и в первую очередь надо искать опечатки
только потом можно проверять логику

во всех опорных точках обязательно распечатывать переменные

не
Visual Basic
1
docmd.openform "forma1",,,"код=" & me.код
а
Visual Basic
1
2
3
4
dim s1
s1="код=" & me.код
debug.print s1
docmd.openform "forma1",,,s1
а при более сложных условиях обязательно обязательно обязательно обязательно