Имеется база под SQLServer 2000.
Имеется отчет в кристале который коннектится к базе через More Data Sourse\Microsoft SQL Server
Соответственно передается сервер, база, имя полтзователя и пароль.
Как сделать так, чтобы при вызове в программе передать (или изменить) коннект в этот отчет. Ведь не факт, что имя сервера и базы будет совпадать.
Перепробовал кучу способов (PESetNthTableLogOnInfo,PELogOnServerб PELogOnServerEx), но везде надо вводить пароль.
Бьюсь вторую неделю. Безрезультатно.
Извиняюсь, если сумбурно изложил — чувства переполняют.
1. Создать экземпляр объекта
2. OpenReport("Имя_отчёта.rpt")
3. LogOnServer("Имя_dll_для_сервера.dll",
"Имя_сервера",
"",
"Имя_пользователя", &
"Пароль")
4. Preview()
5. LogOffServer(...)
Вы писали:
F>Всем кто слышит помогите !!!!!!!!!!!!!
F>Имеется база под SQLServer 2000. F>Имеется отчет в кристале который коннектится к базе через More Data Sourse\Microsoft SQL Server F>Соответственно передается сервер, база, имя полтзователя и пароль.
F>Как сделать так, чтобы при вызове в программе передать (или изменить) коннект в этот отчет. Ведь не факт, что имя сервера и базы будет совпадать. F>Перепробовал кучу способов (PESetNthTableLogOnInfo,PELogOnServerб PELogOnServerEx), но везде надо вводить пароль. F>Бьюсь вторую неделю. Безрезультатно.
F>Извиняюсь, если сумбурно изложил — чувства переполняют.
Здравствуйте, Falic, Вы писали:
F>Здравствуйте, Быстрый, Вы писали:
Б>>Здравствуйте, Falic,
Б>>Попробуй
Б>>1. Создать экземпляр объекта Б>>2. OpenReport("Имя_отчёта.rpt") Б>>3. LogOnServer("Имя_dll_для_сервера.dll", Б>> "Имя_сервера", Б>> "", Б>> "Имя_пользователя", & Б>> "Пароль") Б>>4. Preview() Б>>5. LogOffServer(...)
Б>>Вы писали:
F>Так в том и дело, что при вызове из программы пароль, под которым вошел пользователь, я не знаю.
Как это не знаете? Если это не смешанная аутентификация, вы должны были сделать в своей программе диаолг ввода и имени и пароля пользователя.
Или че-то я не понял?
В этом случае нужно в SQL сервере завести пользователя, под которым всегда и вызывать отчёт несмотря на то, какой пользователь и пароль были введены при входе в программе клиента.
Вы писали:
F>Здравствуйте, Быстрый, Вы писали:
Б>>Здравствуйте, Falic,
Б>>Попробуй
Б>>1. Создать экземпляр объекта Б>>2. OpenReport("Имя_отчёта.rpt") Б>>3. LogOnServer("Имя_dll_для_сервера.dll", Б>> "Имя_сервера", Б>> "", Б>> "Имя_пользователя", & Б>> "Пароль") Б>>4. Preview() Б>>5. LogOffServer(...)
Б>>Вы писали:
F>Так в том и дело, что при вызове из программы пароль, под которым вошел пользователь, я не знаю.
Здравствуйте, Vitaton, Вы писали:
V>Здравствуйте, Falic, Вы писали:
F>>Здравствуйте, Быстрый, Вы писали:
Б>>>Здравствуйте, Falic,
Б>>>Попробуй
Б>>>1. Создать экземпляр объекта Б>>>2. OpenReport("Имя_отчёта.rpt") Б>>>3. LogOnServer("Имя_dll_для_сервера.dll", Б>>> "Имя_сервера", Б>>> "", Б>>> "Имя_пользователя", & Б>>> "Пароль") Б>>>4. Preview() Б>>>5. LogOffServer(...)
Б>>>Вы писали:
F>>Так в том и дело, что при вызове из программы пароль, под которым вошел пользователь, я не знаю.
V>Как это не знаете? Если это не смешанная аутентификация, вы должны были сделать в своей программе диаолг ввода и имени и пароля пользователя. V>Или че-то я не понял?
Дело в том, что я пишу расширения ActiveX для большой корпоративной системы, которая работает с БД. Пароль вводится при входе в систему, а там я могу только получить текущий коннект к базе. Соответственно пароля я узнать не могу (самому дали одного юзера для разработки). Я нашел в документации, что можно как-то передать существующий коннект ( по моему через Connect, LogonInfo и LogOnServer либо есть какая то процедура в crpe32.dll) но как это сделать я не нашел.
Здравствуйте, Falic, Вы писали:
F>Как сделать так, чтобы при вызове в программе передать (или изменить) коннект в этот отчет. Ведь не факт, что имя сервера и базы будет совпадать. F>Перепробовал кучу способов (PESetNthTableLogOnInfo,PELogOnServerб PELogOnServerEx), но везде надо вводить пароль.
Crystal Reports может пользоваться уже имеющимся HDBC, так что
последовательность проста:
Здравствуйте, Alexey Kirpa, Вы писали:
AK>Crystal Reports может пользоваться уже имеющимся HDBC, так что AK>последовательность проста:
AK>PEOpenPrintJob(...); AK>PELogOnSQLServerWithPrivateInfo("PDSODBC.DLL", (BYTE*) hDBC);
А где взять этот hDBC?
Я с этим никогда не работал.
Здравствуйте, Falic, Вы писали:
F>Здравствуйте, Alexey Kirpa, Вы писали:
F>А где взять этот hDBC? F>Я с этим никогда не работал.
Это дескриптор соединения с БД для ODBC API.
А вот как тебе его получить, зависит от оч. многих факторов.
F>Дело в том, что я пишу расширения ActiveX для большой корпоративной системы, которая работает с БД. Пароль вводится при входе в систему, а там я могу только получить текущий коннект к базе
А в каком виде ты получаешь коннект к базе?
И вообще, на чем написано клиентское приложение?
Для большей информации о HDBC, см. MSDN
(keywords: SQLAllocHandle, SQLConnect/SQLDriverConnect).
Здравствуйте, Alexey Kirpa, Вы писали:
AK>Здравствуйте, Falic, Вы писали:
F>>Здравствуйте, Alexey Kirpa, Вы писали:
F>>А где взять этот hDBC? F>>Я с этим никогда не работал.
AK>Это дескриптор соединения с БД для ODBC API. AK>А вот как тебе его получить, зависит от оч. многих факторов.
F>>Дело в том, что я пишу расширения ActiveX для большой корпоративной системы, которая работает с БД. Пароль вводится при входе в систему, а там я могу только получить текущий коннект к базе
AK>А в каком виде ты получаешь коннект к базе? AK>И вообще, на чем написано клиентское приложение?
AK>Для большей информации о HDBC, см. MSDN AK>(keywords: SQLAllocHandle, SQLConnect/SQLDriverConnect).
ActiveX пишу на Delphi, а соннект получаю как объект ADOConnection.