Ошибка odbc sqlstate 08004

I want to add two service names in one tnsnames.ora file and getting error
in below 2 image in «Microsoft ODBC Driver Configuration».
enter image description here

asked Sep 11, 2016 at 8:03

sandhiya's user avatar

4

One trick which help me is, when you fill:

Data Source Name     Test
TNS Service Name     10.1.1.105:1521/ALXTEST

so you need to specify the hostname:port/servicename, then it should work

answered Jul 14, 2020 at 9:40

PV8's user avatar

PV8PV8

5,5367 gold badges41 silver badges80 bronze badges

1

click on start icon->type cmd in the text box-> you can see cmd.exe-> click on it-> type tnsping click enter.

check whether you can connect to the destination or not

answered Sep 30, 2016 at 12:32

rajesh's user avatar

I had this issue and on a specific version of Oracle (instant client 11.2), I added .World after the tnsname and it worked.

ALXTEST.World =
(description =

(service_name =ALXTEST.World

answered Feb 13 at 15:37

Peter E's user avatar

1

780388Apr 4 2011 — edited Apr 4 2011

Hi Experts/Gurus,

I am trying to create a new datasource using Oracle 11g driver with the details below:

Datasource Name: PeopleSoft
Description:
TNS Service Name: HR91PEN
User ID: sysadm
Password: SysAdm1n

when I click Test Connect I got this error below:

Error:
Unable to Connect
SQLState=08004
[Oracle][ODBC][Ora]ORA-12154: TNS: could not resolve the connect identifier specified

Please help.

Thanks you so much…
JP

This post has been answered by Gianluca Ancarani on Apr 4 2011

Jump to Answer

Locked due to inactivity on May 2 2011

Today, when using ODBC to connect to Oracle database, I reported such an error as “unable to connect sqlstate = 08004 Oracle ODBC ora-12154”. After checking on the Internet for a long time, I said that the powerdesign installation path has special characters, but I still reported this error after removing the spaces and brackets in my path. Simply remove powerdesign and connect directly with ODBC, but still report an error. At this time, I realize that it is not the problem of powerdesign installation path. Take a closer look at TNS service name, it is all garbled

The database version I use is Oracle 11g 64 bit server, and the 32-bit client is installed. The 64 bit ODBC TNS service name will be garbled. As shown in the picture above

solution:

add system environment variable

Variable name: TNS_ ADMIN

Variable value: C: app, administrator, product, 11.2.0, client_ 2networkadmin (ORACLE_ Network under home (admin)

Restart or log off after adding

Similar Posts:

   ЧессМастер

03.03.21 — 18:30

Всем доброе время суток !

Ситуация следующая.

Есть база Firebird на компе в сети (пропускная система).

Надо к ней подключиться  из 1С.

Через консоль с компа все отлично подключается — то есть по идее все нормально с правами, драйверами и т.п.

Но через 1С хоть ты тресни никак не хочет.

Текст кода

    Conn = Новый COMОбъект(«ADODB.Connection»);

    
    Conn.ConnectionString = «DRIVER=Firebird/InterBase(r) driver;» +

     «DBNAME=KD-SKUD-01:C:Program Files (x86)ENTServerDBCBASE.FDB;» +  // Исправьте на свой IP, порт и путь к базе данных !

     «UID=SYSDBA;» +                                     // Исправьте на свое имя пользователя !

     «PWD=masterkey;» +                                  // Исправьте на правильный пароль !

     «CHARSET=WIN1251;» +                                // Исправьте на свою кодировку подключения !!!

     «C:Program Files (x86)FirebirdFirebird_2_1binfbclient.dll»;

    
     Conn.ConnectionTimeout = 180;

     Conn.CursorLocation = 3;

     // Подключаемся к базе данных

      
     Попытка

        Conn.Open(Conn.ConnectionString);

        
        Сообщить(«успешно подключились к базе проходной»);

        
     Исключение

        Сообщить(«Не удалось выполнить подключение » + ОписаниеОшибки());

     КонецПопытки;    

Выдает ошибку

«Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию»

При этом через консоль Fireboird  с этого же компа под этим же пользователем с таким расположением DB все подключается.

В чем может быть дело ?

   Вафель

1 — 03.03.21 — 18:50

не установлен драйвера одбу

   ЧессМастер

2 — 03.03.21 — 20:16

(1) Установлен.

1. Панель управленияВсе элементы панели управленияАдминистрирование

Firebird/InterBase(r) driver

Версия 2.00.01.152

2. Консолью Firebird подключение к базе идет. Если бы драйвера не было то подключение консолью бы не проходило.

   ДенисЧ

3 — 03.03.21 — 20:31

Сейчас выяснится, что этот код &НаСервере…

   acht

4 — 03.03.21 — 20:47

64×32

   Кирпич

5 — 03.03.21 — 20:48

мож «CLIENT=C:Program Files (x86)FirebirdFirebird_2_1binfbclient.dll»;

   vovastar

6 — 03.03.21 — 21:02

(0) старый добрый Firebird…аж вздрагиваю при его упоминании…

   Вафель

7 — 03.03.21 — 21:15

консоль fb не юзает одбц, а нативно подкючается

   ЧессМастер

8 — 04.03.21 — 11:54

(3) Да в этом дело оказалось.

Пробовал это сделать в модуле объекта отчета на СКД. Сделал для проверки на клиенте — все работает.

Еще один момент можешь подсказать ?

При подключении внешнего источника данных с этой же строкой подключения выдает сообщение

Ошибка ODBC. SQLSTATE: IM002

Номер ошибки: 0

Описание: [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию

Я правильно понимаю что для того чтобы подключить внешний источник данных надо

1. Драйвер ставить на сервере 1С

2. Драйвер ставить той же разрядности как и сервер 1С.

   ЧессМастер

9 — 04.03.21 — 11:54

(6) Что делать — БД пропускной системы на нем крутится.

   Gimalaj

10 — 04.03.21 — 12:29

(8) >> Я правильно понимаю что для того чтобы подключить внешний источник данных надо…

Да, все верно.

   Gimalaj

11 — 04.03.21 — 12:32

А вообще, никогда не понимал людей, пишущих: ConnectionString = «DRIVER=такой-то, DBNAME=такая-то, UID=такой-то и т.д.».

Намного проще создать в системе DSN, а в коде написать «dsn=такой-то».

   ДенисЧ

12 — 04.03.21 — 12:35

(11) Хорошо, что мне не приходилось править твой такой код…

   Gimalaj

13 — 04.03.21 — 12:36

(12) ОК, аргументируй. Что не так?

   ДенисЧ

14 — 04.03.21 — 12:38

(13) Лишние движения телом.

   ДенисЧ

15 — 04.03.21 — 12:39

И переносимость. Забудешь ты притащить в прод свой дсн и ага.

   Gimalaj

16 — 04.03.21 — 12:41

(15) Ну это не аргумент. Точно так же на продуктовом сервере можно забыть установить драйвер, забыть изменить имя/логин/пароль для базы и т.д.

   ЧессМастер

17 — 04.03.21 — 20:58

(11) >Намного проще создать в системе DSN, а в коде написать «dsn=такой-то».

Если тебе не нравится писать в коде «DBNAME=такая-то» то никто не мешает хранить значение «DBNAME=такая-то» где угодно — в табличной части, в регистре сведений и т.п.

   ЧессМастер

18 — 04.03.21 — 21:02

(10) При работе на сервере появился новый прикол

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

При этом подключение идет под теми же данными как и с локальной машины. То есть при подключение с локальной машины подключение проходит, на сервере под этими же данными нет.

Что бросается в глаза — версия драйвера на сервере другая. Может при изменении версии драйвера поменялся синтаксис подключения ?

   Fram

19 — 05.03.21 — 00:33

(18) может все таки в разные базы ломишься?.. если что диск С на клиенте не всегда равно диск С на сервере

   ЧессМастер

20 — 05.03.21 — 11:37

(19) >может все таки в разные базы ломишься

Да нет в одну и ту же.

DBNAME=KD-SKUD-01:C:Program Files (x86)ENTServerDBCBASE.FDB

Это расположение БД пропускной системы на другом компе в сети. Если я со своего компа присоединяюсь с клиента то все нормально. Если с сервера с такой же строкой подключения выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

Как может быть что под однги ми и теми же учетными данными

UID=SYSDBA

PWD=masterkey

с клиента пускает а с сервера нет ? Это бред какой то реальный.

   ЧессМастер

21 — 05.03.21 — 11:41

Вот это прикол

«Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

Возникает вопрос — как же подключаться к Firebird на сервере если там 64 разрядная 1С ? И 32 разрядный драйвер Firebird не сработает.

   Пузан

22 — 05.03.21 — 11:43

(21) Ставить 64 разряда драйвер. Нет?

   ЧессМастер

23 — 05.03.21 — 11:59

(22) Смотри что получается

Сейчас стоит 64 разрядный драйвер.

При попытке подключения «на сервере» выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

Это происходит по причине того что 64 разрядный драйвер с сервера пытается подключиться в базу Firebird которая создана в 32 разрядном приложении.

И при этом возникает вот этот нюанс

«Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

При этом 64 разрядный сервер не ставит 32 разрядный драйвер Firebird. Который нужен для обхода ограничения

>»Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

   Пузан

24 — 05.03.21 — 12:04

Ну значит капец. С твоей базой можно работать только через 32 разрядную 1С.

   Вафель

25 — 05.03.21 — 12:04

   ЧессМастер

26 — 05.03.21 — 18:21

(25) Так там конкретики нет

> я наткнулся на веб-сайт, который предложил изменить реестр для решения другой проблемы.

На какой сайт ?

>Я закончил создание соединения ODBC непосредственно под HKLMSoftwareODBC

Что он конкретно менял ?

   ЧессМастер

27 — 05.03.21 — 18:38

У кого то работает подключение к Firebird через внешние источники данных на сервере 64 разрядном ?

   ДедМорроз

28 — 06.03.21 — 13:15

Прекрасно можно подключаться к 32 из 64 и наоборот,только разрядность установленного odbc драйвера должна совпадать с разрядностью приложения.

Ставим на сервер odbc64 и в путь.

   ДедМорроз

29 — 06.03.21 — 13:17

Ну и надо понимать,что сервер — это служба,запущенная на конкретной машине,и в строке подключения указывается ее адрес,а путь базы уже указывается относительно этой службы и на той машине,где она установлена.

   ЧессМастер

30 — 09.03.21 — 13:23

(28) >Прекрасно можно подключаться к 32 из 64 и наоборот,только разрядность установленного odbc драйвера должна совпадать с разрядностью приложения.

Ничего подобного

В (23) это подробно описано

Сейчас стоит 64 разрядный драйвер.

При попытке подключения «на сервере» выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

Это происходит по причине того что 64 разрядный драйвер с сервера пытается подключиться в базу Firebird которая создана в 32 разрядном приложении.

И при этом возникает вот этот нюанс

«Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

Не откроет базу данных созданную в Firebird 32 bit с сервере где установлен драйвер Firebird 64 bit.

А 32 разрядный драйвер Firebird на сервер 64 bit не ставится.

   ЧессМастер

31 — 09.03.21 — 13:26

(28) >Прекрасно можно подключаться к 32 из 64 и наоборот,

Нет нельзя.

При попытке подключения из 64 в 32 выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

Причина в том что

«Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

   Вафель

32 — 09.03.21 — 13:59

(31) фб должен быть 32 бит, а одбц — 64

   Вафель

33 — 09.03.21 — 14:01

ты напрямую к файлу обращаешься, а не к серверу чтоли?

   Кирпич

34 — 09.03.21 — 15:16

В сообщении об ошибке явно намекают про юзера и пароль. При чем тут 64 и 32. Фигня какая то. С правами надо разбираться.

   Кирпич

35 — 09.03.21 — 15:20

Можно же явно указать клиента в параметрах подключения. Поставить ODBC 64 и клиента 64 и всё будет работать.

   Gimalaj

36 — 09.03.21 — 15:45

(31) Значит, что-то у тебя не так. У меня точно такая же ситуация: база изначально работала с х32-приложением, потом понадобился доступ к ней из 1С. В настоящее время мы работаем с этой базой данных как из 32-разрядного дельфёвого приложения, так и из 64-разрядного сервера 1С.

   Gimalaj

37 — 09.03.21 — 15:47

Создай на сервере, где развернут сервер 1С источник DSN и протестируй оттуда.

   Кирпич

38 — 09.03.21 — 15:49

(37) Да автор уже, наверное, доложил начальству о фатальной ошибке в Fierbird и успокоился :)

   Кирпич

39 — 09.03.21 — 15:50

уж неделя прошла

   Gimalaj

40 — 09.03.21 — 15:53

(39) Ну, последнее сообщение он два часа назад написал.

   ЧессМастер

41 — 09.03.21 — 16:06

(32) >фб должен быть 32 бит, а одбц — 64

Так и есть.

   ЧессМастер

42 — 09.03.21 — 16:08

(33)

>ты напрямую к файлу обращаешься, а не к серверу чтоли?

К какому серверу ? Я подключаюсь к файлу

DBNAME=KD-SKUD-01:C:Program Files (x86)ENTServerDBCBASE.FDB

Этот файл лежит на компе с пропускной системой. И там база 32 bit.

При подключении с локальной машины при использовании драйвера Firebird 32 bit все проходит отлично.

Но как только подключение к этому же файлу идет с использованием 64 разрядного драйвера Firebird (через сервер 1С) валится ошибка

При попытке подключения из 64 в 32 выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

   ЧессМастер

43 — 09.03.21 — 16:09

(34) > При чем тут 64 и 32

При том что

«Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

А именно этот фокус пытается провернуть 64 разрядный драйвер когда лезет в 32 разрядную базу Firebird.

   ЧессМастер

44 — 09.03.21 — 16:12

(35) >Поставить ODBC 64 и клиента 64 и всё будет работать.

Нет не будет.

Еще раз

Как только клиент (драйвер) меняется с 32 разрядного на 64 разрядный и идет попытка подключения к 32 разрядной базе Firebird валится ошибка

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

Обход этот ошибки только

1. Конвертация базы Firebird в 64 разрядную

2. Работа с 32 разрядной базой Firebird с клиента с использованием драйвера 32 bit

3. Работа с 32 разрядной базой Firebird из файловой базу с клиента с использованием драйвера 32 bit.

   ЧессМастер

45 — 09.03.21 — 16:14

(35) >Можно же явно указать клиента в параметрах подключения.

Что ты укажешь явно ?

На сервере 1С который 64 bit

1. Драйвер 32 разрядный не ставится.

2. При попытке подключения из 64 сервера 1С в 32 базу Firebird выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

   ЧессМастер

46 — 09.03.21 — 16:16

Я перечитал кучу статей на Инфостарте на эту тему.

Народ только такие способы нашел

1. Конвертация базы Firebird в 64 разрядную

2. Работа с 32 разрядной базой Firebird с клиента с использованием драйвера 32 bit

3. Работа с 32 разрядной базой Firebird из файловой базу с клиента с использованием драйвера 32 bit.

Напрямую с сервера 64 bit в базу Firebird 32 bit никто не победил.

   ЧессМастер

47 — 09.03.21 — 16:22

(37) >Создай на сервере, где развернут сервер 1С источник DSN и протестируй оттуда.

Если речь идет про ВнешниеИсточникиДанных то при подключении из 1С в базу Firebird используется как раз драйвер 64 bit с сервера 1С.

С такой же ошибкой как это происходит при попытке подключиться обработкой на сервере.

Те же грабли только в профиль.

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

   ЧессМастер

48 — 09.03.21 — 16:27

(36) >В настоящее время мы работаем с этой базой данных как из 32-разрядного дельфёвого приложения, так и из 64-разрядного сервера 1С.

Возможно в вашем приложении нет такого жесткого ограничения какое есть у Firebird

>»Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

   Кирпич

49 — 09.03.21 — 16:43

С какого перепугу «Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

Сервер же на другом компе. Ему пофиг разрядность клиента. Он же через сеть общается. У меня вот работает сервер на 32 и подключаюсь я 64 битным клиентом.

   Кирпич

50 — 09.03.21 — 16:49

С правами там что то. Написано же черным по белому.

   Gimalaj

51 — 09.03.21 — 17:04

(47) Речь в (37) идет НЕ про внешние источники данных.Речь там идет вообще не про 1С.

Открой в Виндоус «Панель управления» — «Администрирование» — «Источники данных ODBC (64-разрядная версия)». Создай DSN и в созданном DSN ты сможешь протестировать соединение с Firebird.

   Gimalaj

52 — 09.03.21 — 17:05

(50) Черным по белому там написано не про права, а про логин/пароль.

   Gimalaj

53 — 09.03.21 — 17:20

(48) «Упрямство — первый признак тупости» (с) Глеб Жеглов, «Место встречи изменить нельзя», по-моему 3-я серия.

   Кирпич

54 — 09.03.21 — 17:32

(52) Ну как бы нет имени и пароля — нет прав

   Garykom

55 — 09.03.21 — 17:37

(0) Лично я использую прокладку на Golang для работы с внешними БД из 1С

Ибо внешние источники данных слегка задолбали, на сервере часто прав нету — злобные админы

   Garykom

56 — 09.03.21 — 17:38

(55)+ Если надо то могу сваять и выложить для Firebird

   Garykom

57 — 09.03.21 — 17:39

(56)+ https://github.com/nakagami/firebirdsql

суть обычный exe (или бинарник под линукс) который запускаешь с параметрами, передав ему параметры подключения, текст запроса sql и имя файла куда писать результат

и все в файле результат или в csv или в json

   Черепахыч

58 — 09.03.21 — 17:47

я тоже недавно парился с этой проблемой

Смотри. у меня тоже сервер 64 бит.

на клиенте ставлю 32 бит.

Драйвер да.. 32 битный. Firebird_ODBC_2.0.5.156_Win32.exe или gds32.dll

В моем случае работает только на клиенте.

Процедуру подключения, использование драйвера пишу на #клиенте

на всякий случай кидаю тебе свой 100% рабочий код

СКУД система у меня  «Тайм контрол»

&НаКлиенте

Процедура Рефф_ЗаполнитьTimeControl(Команда)

    Если объект.Табель.Количество()>=0 тогда

        Если Вопрос(«Очистить табличную часть?»,РежимДиалогаВопрос.ДаНет)=КодВозвратаДиалога.Да тогда

            объект.Табель.Очистить();

        Конецесли;

    Конецесли;    

    
    
        
    FBDBAddr  = «192.168.2.5/3053:C:Program Files (x86)TimeControlBASEOKO.FDB»;    

    
    //где 192.168.2.5/3053 — адрес удаленного сервера с софтиной time Control

    //C:Program Files (x86)TimeControlBASEOKO.FDB» — путь базе на удаленном сервере (это не обязательно локальный путь!)

    
    
    //FBDBAddr  = «192.168.2.5/3053″;//:C:Program Files (x86)TimeControlBASEOKO.FDB»;

    FBUserName = «MEGA»;

    FBUserPass= «STMEGA21»;

    
    ConnectionБД =Новый COMОбъект(«ADODB.Connection»);

    
    ConnectionБД.ConnectionString=»driver=Firebird/InterBase(r) driver;

    //|Dialect=3;

    |CHARSET=NONE;

    |Uid=MEGA;

    |Pwd=STMEGA21;

    |Dbname=»+СокрЛП(FBDBAddr);

    ConnectionБД.ConnectionTimeOut=15; // и хватит

    ConnectionБД.CursorLocation=3;

    
    Попытка

        ConnectionБД.Open(ConnectionБД.ConnectionString);

        //Сообщить(«Соединение успешно установлено!»);

    Исключение

        Сообщить(«Ошибка при установке соединения: «+ОписаниеОшибки());

        мСоединение=Неопределено;

        возврат;

    КонецПопытки;

    //

    
    
    //SELECT U.FULLNAME, U.TABNUM, U.DEVICE_UID, G.WORKDATE, G.FACT_MIN_WORK FROM GLOBAL_WORK_BY_DAY(:BDATE, :FDATE,-1,-1,»,»,0,’0:00′,’0:00′,0,1,0) G LEFT JOIN USERS U ON (G.UID=U.UID) ORDER BY U.FULLNAME, G.WORKDATE

    

    //Входные параметры:

    //BDATE — начало периода

    //FDATE — окончание периода

    //

    //Выходные поля:

    //DEVICE_UID — код сотрудника на устройстве

    //TABNUM — табельный номер

    //FULLNAME- ФИО

    //WORKDATE — дата

    //FACT_MIN_WORK — отработанное время в минутах    

    //BDATE =»‘01.11.2020′»;

    //FDATE =»‘30.11.2020′»;

    BDATE = «‘» + Формат( НачалоМесяца(объект.НачалоПериода) , «ДФ=dd.MM.yyyy» )+ «‘»;

    FDATE = «‘» + Формат( КонецМесяца(объект.НачалоПериода ) , «ДФ=dd.MM.yyyy» )+ «‘»;

    
    RS = Новый COMОбъект(«ADODB.Recordset»);

    RS.ActiveConnection = ConnectionБД;

      RS.CursorType = 1;

      RS.LockType = 3;

    //Str = «SELECT U.FULLNAME, U.TABNUM, U.DEVICE_UID, G.WORKDATE, G.FACT_MIN_WORK FROM GLOBAL_WORK_BY_DAY(:BDATE, :FDATE,-1,-1,»,»,0,’0:00′,’0:00′,0,1,0) G LEFT JOIN USERS U ON (G.UID=U.UID) ORDER BY U.FULLNAME, G.WORKDATE»;

    Str = «SELECT U.FULLNAME, U.TABNUM, U.DEVICE_UID, G.WORKDATE, G.FACT_MIN_WORK FROM GLOBAL_WORK_BY_DAY(«+BDATE+», «+FDATE+»,-1,-1,»,»,0,’0:00′,’0:00′,0,1,0) G LEFT JOIN USERS U ON (G.UID=U.UID) ORDER BY U.FULLNAME, G.WORKDATE»;

    //Str = «SELECT U.FULLNAME, U.TABNUM, U.DEVICE_UID, G.WORKDATE, G.FACT_MIN_WORK FROM GLOBAL_WORK_BY_DAY(‘01.11.2020′,’30.11.2020′ ,-1,-1,»,»,0,’0:00′,’0:00’,0,1,0) G LEFT JOIN USERS U ON (G.UID=U.UID) ORDER BY U.FULLNAME, G.WORKDATE»;

    попытка

        RS.Open(Str, ConnectionБД);

        //Сообщить («Запрос — ОК»);

    исключение

        Сообщить («Проблемы с выполнением запроса к FireBird»);

        возврат;

    КонецПопытки;

    
    
    ТаблицаТаймКонтрол.Очистить();

     Пока RS.EOF() = 0 Цикл

        
        НовСтрТК = ТаблицаТаймКонтрол.Добавить();

        НовСтрТК.ФИО  =RS.Fields(«FULLNAME»).Value;

        НовСтрТК.Дата = RS.Fields(«WORKDATE»).Value;

        НовСтрТК.КоличествоМинут = RS.Fields(«FACT_MIN_WORK»).Value;

        НовСтрТК.КоличествоЧасов = НовСтрТК.КоличествоМинут / 60;

        НовСтрТК.НомерДня =  День( НовСтрТК.дата);

        RS.MoveNext();

     КонецЦикла;

   ЧессМастер

59 — 10.03.21 — 18:47

(49) >У меня вот работает сервер на 32 и подключаюсь я 64 битным клиентом.

Тогда объясни как может быть такое — если через COMОбъект(«ADODB.Connection») через клиента все работает, а при использовании ПараметрыСоединенияВнешнегоИсточникаДанных через сервер с той же строкой подключения выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

я подчеркиваю — С ТОЙ ЖЕ СТРОКОЙ ПОДКЛЮЧЕНИЯ.

   ЧессМастер

60 — 10.03.21 — 18:48

(50) >С правами там что то. Написано же черным по белому.

Строка подключения через клиент и через сервер ОДИНАКОВАЯ.

Но через клиент работает а через сервер нет.

Открываем гугл по поводу ошибки [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

и читаем

https://qna.habr.com/q/449495

«Надо было удалить Firebird для 64 bit и установить Firebird для 32 bit. Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

   ЧессМастер

61 — 10.03.21 — 18:51

(52) >Черным по белому там написано не про права, а про логин/пароль.

Я тебе  еще раз говорю

Через клиент работает а через сервер нет. С ТОЙ ЖЕ СТРОКОЙ ПОДКЛЮЧЕНИЯ.

Я бы понял если бы в строке подключения через клиент было

UID=SYSDBA

PWD=masterkey

а через сервер что то другое. Но строка ОДИНАКОВАЯ.

   Кирпич

62 — 12.03.21 — 10:44

(60) «Надо было удалить Firebird для 64 bit и установить Firebird для 32 bit. Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

Так это написал такой же специалист как и ты. На самом деле, переустановив Firebird, он просто снес настройки и поставил новые, по умолчанию.

   ЧессМастер

63 — 09.04.21 — 23:39

(58) Спасибо за помощь.

Я сделал на мой взгляд намного удобной и проще. Подключил базу через Внешние источники данных, прописал таблицы. Далее с помощью 1С-ных запросов получаю данные, заполняю ТЗ и подаю на вход СКД.

   ЧессМастер

64 — 09.04.21 — 23:42

(62) «Так это написал такой же специалист как и ты»

А ты что телепат что можешь определять квалификацию другого специалиста не видя и не зная что он делал ? Только не надо мне заливать что ты сам всегда со всем разбираешься и никогда не спрашиваешь ни у кого как это сделать. Так не бывает.

   Кирпич

65 — 10.04.21 — 07:35

(64) «никогда не спрашиваешь»

Так ты спрашиваешь и не слушаешь, что тебе говорят. Нафиг спрашивать тогда.

Специалист ты конечно же хороший, только любой программист усомнится в утверждении, что «файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit». А ты сходу веришь какому то школьнику, который написал это где то на заборе.

  

ДедМорроз

66 — 10.04.21 — 17:54

На самом деле,там не только от битности зависит,но и от версии — файл,созданный одной версией сервера,на другой не открывается,и в ошибке как раз и пишется,что файл не той версии.

Ну и потом,для firebird есть ODBC-драйвер как 32 бита,так и 64 и вот битность драйвера должна совпадать с битностью приложения,а совпадение с битностью сервера не требуется.

  

ЧессМастер

03.03.21 — 18:30

Всем доброе время суток !

Ситуация следующая.

Есть база Firebird на компе в сети (пропускная система).

Надо к ней подключиться  из 1С.

Через консоль с компа все отлично подключается — то есть по идее все нормально с правами, драйверами и т.п.

Но через 1С хоть ты тресни никак не хочет.

Текст кода

    Conn = Новый COMОбъект(«ADODB.Connection»);

    

    Conn.ConnectionString = «DRIVER=Firebird/InterBase(r) driver;» +

     «DBNAME=KD-SKUD-01:C:Program Files (x86)ENTServerDBCBASE.FDB;» +  // Исправьте на свой IP, порт и путь к базе данных !

     «UID=SYSDBA;» +                                     // Исправьте на свое имя пользователя !

     «PWD=masterkey;» +                                  // Исправьте на правильный пароль !

     «CHARSET=WIN1251;» +                                // Исправьте на свою кодировку подключения !!!

     «C:Program Files (x86)FirebirdFirebird_2_1binfbclient.dll»;

    

     Conn.ConnectionTimeout = 180;

     Conn.CursorLocation = 3;

     // Подключаемся к базе данных

      

     Попытка

        Conn.Open(Conn.ConnectionString);

        
        Сообщить(«успешно подключились к базе проходной»);

        

     Исключение

        Сообщить(«Не удалось выполнить подключение » + ОписаниеОшибки());

     КонецПопытки;    

Выдает ошибку

«Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию»

При этом через консоль Fireboird  с этого же компа под этим же пользователем с таким расположением DB все подключается.

В чем может быть дело ?

  

Вафель

1 — 03.03.21 — 18:50

не установлен драйвера одбу

  

ЧессМастер

2 — 03.03.21 — 20:16

(1) Установлен.

1. Панель управленияВсе элементы панели управленияАдминистрирование

Firebird/InterBase(r) driver

Версия 2.00.01.152

2. Консолью Firebird подключение к базе идет. Если бы драйвера не было то подключение консолью бы не проходило.

  

ДенисЧ

3 — 03.03.21 — 20:31

Сейчас выяснится, что этот код &НаСервере…

  

acht

4 — 03.03.21 — 20:47

64×32

  

Кирпич

5 — 03.03.21 — 20:48

мож «CLIENT=C:Program Files (x86)FirebirdFirebird_2_1binfbclient.dll»;

  

vovastar

6 — 03.03.21 — 21:02

(0) старый добрый Firebird…аж вздрагиваю при его упоминании…

  

Вафель

7 — 03.03.21 — 21:15

консоль fb не юзает одбц, а нативно подкючается

  

ЧессМастер

8 — 04.03.21 — 11:54

(3) Да в этом дело оказалось.

Пробовал это сделать в модуле объекта отчета на СКД. Сделал для проверки на клиенте — все работает.

Еще один момент можешь подсказать ?

При подключении внешнего источника данных с этой же строкой подключения выдает сообщение

Ошибка ODBC. SQLSTATE: IM002

Номер ошибки: 0

Описание: [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию

Я правильно понимаю что для того чтобы подключить внешний источник данных надо

1. Драйвер ставить на сервере 1С

2. Драйвер ставить той же разрядности как и сервер 1С.

  

ЧессМастер

9 — 04.03.21 — 11:54

(6) Что делать — БД пропускной системы на нем крутится.

  

Gimalaj

10 — 04.03.21 — 12:29

(8) >> Я правильно понимаю что для того чтобы подключить внешний источник данных надо…

Да, все верно.

  

Gimalaj

11 — 04.03.21 — 12:32

А вообще, никогда не понимал людей, пишущих: ConnectionString = «DRIVER=такой-то, DBNAME=такая-то, UID=такой-то и т.д.».

Намного проще создать в системе DSN, а в коде написать «dsn=такой-то».

  

ДенисЧ

12 — 04.03.21 — 12:35

(11) Хорошо, что мне не приходилось править твой такой код…

  

Gimalaj

13 — 04.03.21 — 12:36

(12) ОК, аргументируй. Что не так?

  

ДенисЧ

14 — 04.03.21 — 12:38

(13) Лишние движения телом.

  

ДенисЧ

15 — 04.03.21 — 12:39

И переносимость. Забудешь ты притащить в прод свой дсн и ага.

  

Gimalaj

16 — 04.03.21 — 12:41

(15) Ну это не аргумент. Точно так же на продуктовом сервере можно забыть установить драйвер, забыть изменить имя/логин/пароль для базы и т.д.

  

ЧессМастер

17 — 04.03.21 — 20:58

(11) >Намного проще создать в системе DSN, а в коде написать «dsn=такой-то».

Если тебе не нравится писать в коде «DBNAME=такая-то» то никто не мешает хранить значение «DBNAME=такая-то» где угодно — в табличной части, в регистре сведений и т.п.

  

ЧессМастер

18 — 04.03.21 — 21:02

(10) При работе на сервере появился новый прикол

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

При этом подключение идет под теми же данными как и с локальной машины. То есть при подключение с локальной машины подключение проходит, на сервере под этими же данными нет.

Что бросается в глаза — версия драйвера на сервере другая. Может при изменении версии драйвера поменялся синтаксис подключения ?

  

Fram

19 — 05.03.21 — 00:33

(18) может все таки в разные базы ломишься?.. если что диск С на клиенте не всегда равно диск С на сервере

  

ЧессМастер

20 — 05.03.21 — 11:37

(19) >может все таки в разные базы ломишься

Да нет в одну и ту же.

DBNAME=KD-SKUD-01:C:Program Files (x86)ENTServerDBCBASE.FDB

Это расположение БД пропускной системы на другом компе в сети. Если я со своего компа присоединяюсь с клиента то все нормально. Если с сервера с такой же строкой подключения выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

Как может быть что под однги ми и теми же учетными данными

с клиента пускает а с сервера нет ? Это бред какой то реальный.

  

ЧессМастер

21 — 05.03.21 — 11:41

Вот это прикол

«Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

Возникает вопрос — как же подключаться к Firebird на сервере если там 64 разрядная 1С ? И 32 разрядный драйвер Firebird не сработает.

  

Пузан

22 — 05.03.21 — 11:43

(21) Ставить 64 разряда драйвер. Нет?

  

ЧессМастер

23 — 05.03.21 — 11:59

(22) Смотри что получается

Сейчас стоит 64 разрядный драйвер.

При попытке подключения «на сервере» выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

Это происходит по причине того что 64 разрядный драйвер с сервера пытается подключиться в базу Firebird которая создана в 32 разрядном приложении.

И при этом возникает вот этот нюанс

«Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

При этом 64 разрядный сервер не ставит 32 разрядный драйвер Firebird. Который нужен для обхода ограничения

>»Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

  

Пузан

24 — 05.03.21 — 12:04

Ну значит капец. С твоей базой можно работать только через 32 разрядную 1С.

  

Вафель

25 — 05.03.21 — 12:04

  

ЧессМастер

26 — 05.03.21 — 18:21

(25) Так там конкретики нет

> я наткнулся на веб-сайт, который предложил изменить реестр для решения другой проблемы.

На какой сайт ?

>Я закончил создание соединения ODBC непосредственно под HKLMSoftwareODBC

Что он конкретно менял ?

  

ЧессМастер

27 — 05.03.21 — 18:38

У кого то работает подключение к Firebird через внешние источники данных на сервере 64 разрядном ?

  

ДедМорроз

28 — 06.03.21 — 13:15

Прекрасно можно подключаться к 32 из 64 и наоборот,только разрядность установленного odbc драйвера должна совпадать с разрядностью приложения.

Ставим на сервер odbc64 и в путь.

  

ДедМорроз

29 — 06.03.21 — 13:17

Ну и надо понимать,что сервер — это служба,запущенная на конкретной машине,и в строке подключения указывается ее адрес,а путь базы уже указывается относительно этой службы и на той машине,где она установлена.

  

ЧессМастер

30 — 09.03.21 — 13:23

(28) >Прекрасно можно подключаться к 32 из 64 и наоборот,только разрядность установленного odbc драйвера должна совпадать с разрядностью приложения.

Ничего подобного

В (23) это подробно описано

Сейчас стоит 64 разрядный драйвер.

При попытке подключения «на сервере» выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

Это происходит по причине того что 64 разрядный драйвер с сервера пытается подключиться в базу Firebird которая создана в 32 разрядном приложении.

И при этом возникает вот этот нюанс

«Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

Не откроет базу данных созданную в Firebird 32 bit с сервере где установлен драйвер Firebird 64 bit.

А 32 разрядный драйвер Firebird на сервер 64 bit не ставится.

  

ЧессМастер

31 — 09.03.21 — 13:26

(28) >Прекрасно можно подключаться к 32 из 64 и наоборот,

Нет нельзя.

При попытке подключения из 64 в 32 выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

Причина в том что

«Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

  

Вафель

32 — 09.03.21 — 13:59

(31) фб должен быть 32 бит, а одбц — 64

  

Вафель

33 — 09.03.21 — 14:01

ты напрямую к файлу обращаешься, а не к серверу чтоли?

  

Кирпич

34 — 09.03.21 — 15:16

В сообщении об ошибке явно намекают про юзера и пароль. При чем тут 64 и 32. Фигня какая то. С правами надо разбираться.

  

Кирпич

35 — 09.03.21 — 15:20

Можно же явно указать клиента в параметрах подключения. Поставить ODBC 64 и клиента 64 и всё будет работать.

  

Gimalaj

36 — 09.03.21 — 15:45

(31) Значит, что-то у тебя не так. У меня точно такая же ситуация: база изначально работала с х32-приложением, потом понадобился доступ к ней из 1С. В настоящее время мы работаем с этой базой данных как из 32-разрядного дельфёвого приложения, так и из 64-разрядного сервера 1С.

  

Gimalaj

37 — 09.03.21 — 15:47

Создай на сервере, где развернут сервер 1С источник DSN и протестируй оттуда.

  

Кирпич

38 — 09.03.21 — 15:49

(37) Да автор уже, наверное, доложил начальству о фатальной ошибке в Fierbird и успокоился :)

  

Кирпич

39 — 09.03.21 — 15:50

уж неделя прошла

  

Gimalaj

40 — 09.03.21 — 15:53

(39) Ну, последнее сообщение он два часа назад написал.

  

ЧессМастер

41 — 09.03.21 — 16:06

(32) >фб должен быть 32 бит, а одбц — 64

Так и есть.

  

ЧессМастер

42 — 09.03.21 — 16:08

(33)

>ты напрямую к файлу обращаешься, а не к серверу чтоли?

К какому серверу ? Я подключаюсь к файлу

DBNAME=KD-SKUD-01:C:Program Files (x86)ENTServerDBCBASE.FDB

Этот файл лежит на компе с пропускной системой. И там база 32 bit.

При подключении с локальной машины при использовании драйвера Firebird 32 bit все проходит отлично.

Но как только подключение к этому же файлу идет с использованием 64 разрядного драйвера Firebird (через сервер 1С) валится ошибка

При попытке подключения из 64 в 32 выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

  

ЧессМастер

43 — 09.03.21 — 16:09

(34) > При чем тут 64 и 32

При том что

«Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

А именно этот фокус пытается провернуть 64 разрядный драйвер когда лезет в 32 разрядную базу Firebird.

  

ЧессМастер

44 — 09.03.21 — 16:12

(35) >Поставить ODBC 64 и клиента 64 и всё будет работать.

Нет не будет.

Еще раз

Как только клиент (драйвер) меняется с 32 разрядного на 64 разрядный и идет попытка подключения к 32 разрядной базе Firebird валится ошибка

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

Обход этот ошибки только

1. Конвертация базы Firebird в 64 разрядную

2. Работа с 32 разрядной базой Firebird с клиента с использованием драйвера 32 bit

3. Работа с 32 разрядной базой Firebird из файловой базу с клиента с использованием драйвера 32 bit.

  

ЧессМастер

45 — 09.03.21 — 16:14

(35) >Можно же явно указать клиента в параметрах подключения.

Что ты укажешь явно ?

На сервере 1С который 64 bit

1. Драйвер 32 разрядный не ставится.

2. При попытке подключения из 64 сервера 1С в 32 базу Firebird выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

  

ЧессМастер

46 — 09.03.21 — 16:16

Я перечитал кучу статей на Инфостарте на эту тему.

Народ только такие способы нашел

1. Конвертация базы Firebird в 64 разрядную

2. Работа с 32 разрядной базой Firebird с клиента с использованием драйвера 32 bit

3. Работа с 32 разрядной базой Firebird из файловой базу с клиента с использованием драйвера 32 bit.

Напрямую с сервера 64 bit в базу Firebird 32 bit никто не победил.

  

ЧессМастер

47 — 09.03.21 — 16:22

(37) >Создай на сервере, где развернут сервер 1С источник DSN и протестируй оттуда.

Если речь идет про ВнешниеИсточникиДанных то при подключении из 1С в базу Firebird используется как раз драйвер 64 bit с сервера 1С.

С такой же ошибкой как это происходит при попытке подключиться обработкой на сервере.

Те же грабли только в профиль.

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

  

ЧессМастер

48 — 09.03.21 — 16:27

(36) >В настоящее время мы работаем с этой базой данных как из 32-разрядного дельфёвого приложения, так и из 64-разрядного сервера 1С.

Возможно в вашем приложении нет такого жесткого ограничения какое есть у Firebird

>»Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

  

Кирпич

49 — 09.03.21 — 16:43

С какого перепугу «Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

Сервер же на другом компе. Ему пофиг разрядность клиента. Он же через сеть общается. У меня вот работает сервер на 32 и подключаюсь я 64 битным клиентом.

  

Кирпич

50 — 09.03.21 — 16:49

С правами там что то. Написано же черным по белому.

  

Gimalaj

51 — 09.03.21 — 17:04

(47) Речь в (37) идет НЕ про внешние источники данных.Речь там идет вообще не про 1С.

Открой в Виндоус «Панель управления» — «Администрирование» — «Источники данных ODBC (64-разрядная версия)». Создай DSN и в созданном DSN ты сможешь протестировать соединение с Firebird.

  

Gimalaj

52 — 09.03.21 — 17:05

(50) Черным по белому там написано не про права, а про логин/пароль.

  

Gimalaj

53 — 09.03.21 — 17:20

(48) «Упрямство — первый признак тупости» (с) Глеб Жеглов, «Место встречи изменить нельзя», по-моему 3-я серия.

  

Кирпич

54 — 09.03.21 — 17:32

(52) Ну как бы нет имени и пароля — нет прав

  

Garykom

55 — 09.03.21 — 17:37

(0) Лично я использую прокладку на Golang для работы с внешними БД из 1С

Ибо внешние источники данных слегка задолбали, на сервере часто прав нету — злобные админы

  

Garykom

56 — 09.03.21 — 17:38

(55)+ Если надо то могу сваять и выложить для Firebird

  

Garykom

57 — 09.03.21 — 17:39

(56)+ https://github.com/nakagami/firebirdsql

суть обычный exe (или бинарник под линукс) который запускаешь с параметрами, передав ему параметры подключения, текст запроса sql и имя файла куда писать результат

и все в файле результат или в csv или в json

  

Черепахыч

58 — 09.03.21 — 17:47

я тоже недавно парился с этой проблемой

Смотри. у меня тоже сервер 64 бит.

на клиенте ставлю 32 бит.

Драйвер да.. 32 битный. Firebird_ODBC_2.0.5.156_Win32.exe или gds32.dll

В моем случае работает только на клиенте.

Процедуру подключения, использование драйвера пишу на #клиенте

на всякий случай кидаю тебе свой 100% рабочий код

СКУД система у меня  «Тайм контрол»

&НаКлиенте

Процедура Рефф_ЗаполнитьTimeControl(Команда)

    Если объект.Табель.Количество()>=0 тогда

        Если Вопрос(«Очистить табличную часть?»,РежимДиалогаВопрос.ДаНет)=КодВозвратаДиалога.Да тогда

            объект.Табель.Очистить();

        Конецесли;

    Конецесли;    

                  FBDBAddr  = «192.168.2.5/3053:C:Program Files (x86)TimeControlBASEOKO.FDB»;    

    

    //где 192.168.2.5/3053 — адрес удаленного сервера с софтиной time Control

    //C:Program Files (x86)TimeControlBASEOKO.FDB» — путь базе на удаленном сервере (это не обязательно локальный путь!)

    

         //FBDBAddr  = «192.168.2.5/3053″;//:C:Program Files (x86)TimeControlBASEOKO.FDB»;

    FBUserName = «MEGA»;

    FBUserPass= «STMEGA21»;

    
    ConnectionБД =Новый COMОбъект(«ADODB.Connection»);

    

    ConnectionБД.ConnectionString=»driver=Firebird/InterBase(r) driver;

    //|Dialect=3;

    |CHARSET=NONE;

    |Uid=MEGA;

    |Pwd=STMEGA21;

    |Dbname=»+СокрЛП(FBDBAddr);

    ConnectionБД.ConnectionTimeOut=15; // и хватит

    ConnectionБД.CursorLocation=3;

    

    Попытка

        ConnectionБД.Open(ConnectionБД.ConnectionString);

        //Сообщить(«Соединение успешно установлено!»);

    Исключение

        Сообщить(«Ошибка при установке соединения: «+ОписаниеОшибки());

        мСоединение=Неопределено;

        возврат;

    КонецПопытки;

    //

         //SELECT U.FULLNAME, U.TABNUM, U.DEVICE_UID, G.WORKDATE, G.FACT_MIN_WORK FROM GLOBAL_WORK_BY_DAY(:BDATE, :FDATE,-1,-1,»,»,0,’0:00′,’0:00′,0,1,0) G LEFT JOIN USERS U ON (G.UID=U.UID) ORDER BY U.FULLNAME, G.WORKDATE

    //Входные параметры:

    //BDATE — начало периода

    //FDATE — окончание периода

    //

    //Выходные поля:

    //DEVICE_UID — код сотрудника на устройстве

    //TABNUM — табельный номер

    //FULLNAME- ФИО

    //WORKDATE — дата

    //FACT_MIN_WORK — отработанное время в минутах    

    //BDATE =»‘01.11.2020′»;

    //FDATE =»‘30.11.2020′»;

    BDATE = «‘» + Формат( НачалоМесяца(объект.НачалоПериода) , «ДФ=dd.MM.yyyy» )+ «‘»;

    FDATE = «‘» + Формат( КонецМесяца(объект.НачалоПериода ) , «ДФ=dd.MM.yyyy» )+ «‘»;

    

    RS = Новый COMОбъект(«ADODB.Recordset»);

    RS.ActiveConnection = ConnectionБД;

      RS.CursorType = 1;

      RS.LockType = 3;

    //Str = «SELECT U.FULLNAME, U.TABNUM, U.DEVICE_UID, G.WORKDATE, G.FACT_MIN_WORK FROM GLOBAL_WORK_BY_DAY(:BDATE, :FDATE,-1,-1,»,»,0,’0:00′,’0:00′,0,1,0) G LEFT JOIN USERS U ON (G.UID=U.UID) ORDER BY U.FULLNAME, G.WORKDATE»;

    Str = «SELECT U.FULLNAME, U.TABNUM, U.DEVICE_UID, G.WORKDATE, G.FACT_MIN_WORK FROM GLOBAL_WORK_BY_DAY(«+BDATE+», «+FDATE+»,-1,-1,»,»,0,’0:00′,’0:00′,0,1,0) G LEFT JOIN USERS U ON (G.UID=U.UID) ORDER BY U.FULLNAME, G.WORKDATE»;

    //Str = «SELECT U.FULLNAME, U.TABNUM, U.DEVICE_UID, G.WORKDATE, G.FACT_MIN_WORK FROM GLOBAL_WORK_BY_DAY(‘01.11.2020′,’30.11.2020′ ,-1,-1,»,»,0,’0:00′,’0:00’,0,1,0) G LEFT JOIN USERS U ON (G.UID=U.UID) ORDER BY U.FULLNAME, G.WORKDATE»;

    попытка

        RS.Open(Str, ConnectionБД);

        //Сообщить («Запрос — ОК»);

    исключение

        Сообщить («Проблемы с выполнением запроса к FireBird»);

        возврат;

    КонецПопытки;

         ТаблицаТаймКонтрол.Очистить();

     Пока RS.EOF() = 0 Цикл

        

        НовСтрТК = ТаблицаТаймКонтрол.Добавить();

        НовСтрТК.ФИО  =RS.Fields(«FULLNAME»).Value;

        НовСтрТК.Дата = RS.Fields(«WORKDATE»).Value;

        НовСтрТК.КоличествоМинут = RS.Fields(«FACT_MIN_WORK»).Value;

        НовСтрТК.КоличествоЧасов = НовСтрТК.КоличествоМинут / 60;

        НовСтрТК.НомерДня =  День( НовСтрТК.дата);

        RS.MoveNext();

     КонецЦикла;

  

ЧессМастер

59 — 10.03.21 — 18:47

(49) >У меня вот работает сервер на 32 и подключаюсь я 64 битным клиентом.

Тогда объясни как может быть такое — если через COMОбъект(«ADODB.Connection») через клиента все работает, а при использовании ПараметрыСоединенияВнешнегоИсточникаДанных через сервер с той же строкой подключения выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

я подчеркиваю — С ТОЙ ЖЕ СТРОКОЙ ПОДКЛЮЧЕНИЯ.

  

ЧессМастер

60 — 10.03.21 — 18:48

(50) >С правами там что то. Написано же черным по белому.

Строка подключения через клиент и через сервер ОДИНАКОВАЯ.

Но через клиент работает а через сервер нет.

Открываем гугл по поводу ошибки [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

и читаем

https://qna.habr.com/q/449495

«Надо было удалить Firebird для 64 bit и установить Firebird для 32 bit. Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

  

  

ЧессМастер

61 — 10.03.21 — 18:51

(52) >Черным по белому там написано не про права, а про логин/пароль.

Я тебе  еще раз говорю

Через клиент работает а через сервер нет. С ТОЙ ЖЕ СТРОКОЙ ПОДКЛЮЧЕНИЯ.

Я бы понял если бы в строке подключения через клиент было

а через сервер что то другое. Но строка ОДИНАКОВАЯ.

  

Кирпич

62 — 12.03.21 — 10:44

(60) «Надо было удалить Firebird для 64 bit и установить Firebird для 32 bit. Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

Так это написал такой же специалист как и ты. На самом деле, переустановив Firebird, он просто снес настройки и поставил новые, по умолчанию.

  

ЧессМастер

63 — 09.04.21 — 23:39

(58) Спасибо за помощь.

Я сделал на мой взгляд намного удобной и проще. Подключил базу через Внешние источники данных, прописал таблицы. Далее с помощью 1С-ных запросов получаю данные, заполняю ТЗ и подаю на вход СКД.

  

ЧессМастер

64 — 09.04.21 — 23:42

(62) «Так это написал такой же специалист как и ты»

А ты что телепат что можешь определять квалификацию другого специалиста не видя и не зная что он делал ? Только не надо мне заливать что ты сам всегда со всем разбираешься и никогда не спрашиваешь ни у кого как это сделать. Так не бывает.

  

Кирпич

65 — 10.04.21 — 07:35

(64) «никогда не спрашиваешь»

Так ты спрашиваешь и не слушаешь, что тебе говорят. Нафиг спрашивать тогда.

Специалист ты конечно же хороший, только любой программист усомнится в утверждении, что «файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit». А ты сходу веришь какому то школьнику, который написал это где то на заборе.

  

ДедМорроз

66 — 10.04.21 — 17:54

На самом деле,там не только от битности зависит,но и от версии — файл,созданный одной версией сервера,на другой не открывается,и в ошибке как раз и пишется,что файл не той версии.

Ну и потом,для firebird есть ODBC-драйвер как 32 бита,так и 64 и вот битность драйвера должна совпадать с битностью приложения,а совпадение с битностью сервера не требуется.

Понравилась статья? Поделить с друзьями:
  • Ошибка odis 2522e
  • Ошибка odbc sqlstate 01s00
  • Ошибка odbc sqlstate 01000
  • Ошибка ocr на частотнике
  • Ошибка ocf частотник шнайдер 312