Вызов скрипта python
-
- Сообщения: 3
- Зарегистрирован: 28 июл 2016, 15:15
Вызов скрипта python
Здравствуйте, создал отчёт с помощью дизайнера, можно ли в него добавить кнопку через которую он будет запускать определённый скрипт на python.
Re: Вызов скрипта python
Здравствуйте.
Извините, возможно мы не совсем точно поняли ваш вопрос.
Не могли бы вы более подробно описать вашу задачу?
Спасибо.
Извините, возможно мы не совсем точно поняли ваш вопрос.
Не могли бы вы более подробно описать вашу задачу?
Спасибо.
-
- Сообщения: 3
- Зарегистрирован: 28 июл 2016, 15:15
Re: Вызов скрипта python
У меня есть удалённый сервер с субд mysql, я через designer строю отчёт из этой бд хранящийся на нём, есть скрипт написанный на python который хранится на этом сервере,и записывает данные в БД. Можно ли в отчёт добавить кнопку,которая будет запускать этот скрипт.
Re: Вызов скрипта python
Здравствуйте.
Вы можете использовать текстовый компонент или изображение и в его событии On Click нопасать код, который будет вызывать нужный скрипт.
Также вы можете добавить форму в отчёт, которая отображается до отчёта. На неё можно добавить кнопку с нужным вам кодом.
Спасибо.
Вы можете использовать текстовый компонент или изображение и в его событии On Click нопасать код, который будет вызывать нужный скрипт.
Также вы можете добавить форму в отчёт, которая отображается до отчёта. На неё можно добавить кнопку с нужным вам кодом.
Спасибо.
-
- Сообщения: 3
- Зарегистрирован: 28 июл 2016, 15:15
Re: Вызов скрипта python
Извините а по этим вещам есть какие нибудь мануалы , чтобы посмотреть примерно.
Re: Вызов скрипта python
Здравствуйте.
К сожалению, именно по этим вопросам документации нету.
Событие вы можете найти здесь В нём можно писать любой код C# или VB.NET. В зависимости от языка отчёта.
Спасибо.
К сожалению, именно по этим вопросам документации нету.
Событие вы можете найти здесь В нём можно писать любой код C# или VB.NET. В зависимости от языка отчёта.
Спасибо.
Re: Вызов скрипта python
День добрый!
Внесу свои два цента.
Разумеется вызвать можно всё что угодно, в т.ч. и скрипт Питона.
Не знаю, какая у вас система, но я скачал отсюда https://www.continuum.io/downloads#windows 32bit'ный дистрибутив и поставил в VM под Windows 7 32b.
Далее установил дистрибутив (файл Anaconda3-4.1.1-Windows-x86.exe), у меня он поставил его в C:\Users\leon\AppData\Local\Continuum\Anaconda3.
Теперь нужно создать новый отчёт и написать в нём код, вызывающий скрипт по событию. Для простоты, взял простой пример суммирования двух цифр (файл sum.py):Понятно, что у вас есть свой скрипт. Кстати, если он в базе хранится в базе данных, то, вероятно его придётся сначала скачать куда-нибудь в temp (например, C:\Users\%UserName%\AppData\Local\Temp), т.к. запускать нужно так: C:\Users\%UserName%\AppData\Local\Continuum\Anaconda3\python.exe sum.py 10 5, т.е. сам файл Питона, скрипт и параметры коммандной строки, в данном случае это два числа a и b.
Теперь код вызова в виде процедуры для C# из отчёта:
Прописываете эту процедуру в коде отчёта, не забывая также добавить в using:
Создаём, например форму отчёта с двумя Text и одним Button и для простоты вызываем скрипт по событию Click:
Собственно всё. Скриншоты в приложении. Полностью рабочий вариант отчёта с процедурой в приложении. Остаётся только утсановить Python, если не установлен.
Самое главное, проверяйте пути откуда запускаете Питона и путь к скрипту, это экстремально важно.
Внесу свои два цента.
Разумеется вызвать можно всё что угодно, в т.ч. и скрипт Питона.
Не знаю, какая у вас система, но я скачал отсюда https://www.continuum.io/downloads#windows 32bit'ный дистрибутив и поставил в VM под Windows 7 32b.
Далее установил дистрибутив (файл Anaconda3-4.1.1-Windows-x86.exe), у меня он поставил его в C:\Users\leon\AppData\Local\Continuum\Anaconda3.
Теперь нужно создать новый отчёт и написать в нём код, вызывающий скрипт по событию. Для простоты, взял простой пример суммирования двух цифр (файл sum.py):
Код: Выделить всё
import sys
a = int(sys.argv[1])
b = int(sys.argv[2])
print (a+b)
Теперь код вызова в виде процедуры для C# из отчёта:
Код: Выделить всё
internal string CallPythonScript(int a, int b, string scriptPath)
{
string python = @"C:\Users\leon\AppData\Local\Continuum\Anaconda3\python.exe"; // python exe path
// create new process start info
ProcessStartInfo startInfo = new ProcessStartInfo(python)
{
UseShellExecute = false,
RedirectStandardOutput = true,
Arguments = string.Format("{0} {1} {2}", scriptPath, a, b)
};
Process process = new Process()
{
StartInfo = startInfo
};
// start the process
process.Start();
// read output value
StreamReader myStreamReader = process.StandardOutput;
string result = myStreamReader.ReadLine();
// wait process to exit
process.WaitForExit();
process.Close();
return result;
}
Код: Выделить всё
using System;
using System.IO;
using System.Diagnostics;
Код: Выделить всё
// parse values from text boxes
int a = int.Parse(tbTextA.Text);
int b = int.Parse(tbTextB.Text);
// execute Python script
string result = CallPythonScript(a, b, @"C:\Temp\sum.py");
// show the result
MessageBox.Show(result);
Самое главное, проверяйте пути откуда запускаете Питона и путь к скрипту, это экстремально важно.
- Вложения
-
- PythonTest.mrt
- Рабочий пример отчёта
- (8.27 КБ) 342 скачивания
-
- Результат выполнения сложения двух чисел
- Clipboard02.png (7.16 КБ) 4092 просмотра
-
- Вкладка Code у тестового отчёта
- Clipboard01.png (75.32 КБ) 4092 просмотра