воскресенье, 11 мая 2014 г.

BPWin русский текст на диаграмме

Друзья, создаем *.reg-файл, копируем в него текст приведенный ниже, перезагружаем компьютер и все.
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
"Arial CE,238"="Arial,238"
"Arial CYR,204"="Arial,204"
"Arial Greek,161"="Arial,161"
"Arial TUR,162"="Arial,162"
"Courier New CE,238"="Courier New,238"
"Courier New CYR,204"="Courier New,204"
"Courier New Greek,161"="Courier New,161"
"Courier New TUR,162"="Courier New,162"
"Helv"="MS Sans Serif"
"Helvetica"="Arial"
"MS Shell Dlg 2"="Tahoma"
"Times"="Times New Roman,204"
"Times New Roman CE,238"="Times New Roman,238"
"Times New Roman CYR,204"="Times New Roman,204"
"Times New Roman Greek,161"="Times New Roman,161"
"Times New Roman TUR,162"="Times New Roman,162"
"Tms Rmn"="MS Serif"
"Arial Baltic,186"="Arial,186"
"Courier New Baltic,186"="Courier New,186"
"Times New Roman Baltic,186"="Times New Roman,186"
"System,0"="System,204"
"Fixedsys,0"="Fixedsys,204"
"Small Fonts,0"="Small Fonts,204"
"MS Serif,0"="MS Serif,204"
"MS Sans Serif,0"="MS Sans Serif,204"
"Courier,0"="Courier New,204"
"Arial Cyr,0"="Arial,204"
"Courier New Cyr,0"="Courier New,204"
"Times New Roman Cyr,0"="Times New Roman,204"
"Helv,0"="MS Sans Serif,204"
"Tms Rmn,0"="MS Serif,204"
"MS Shell Dlg"="Microsoft Sans Serif"
"Arial"="Arial,204"
"Courier New"="Courier New,204"
"Times New Roman"="Times New Roman,204"
"Arial,0"="Arial,204"
"Times New Roman,0"="Times New Roman,204"
"Courier New,0"="Courier New,204"
"Courier"="Courier,204"
"Times,0"="Times,204"

вторник, 29 апреля 2014 г.

C# DataGridView. Объединение двух sql-запросов из SQLServer и Oracle в одну DataTable

Статья в первую очередь является подсказкой для меня, поэтому привожу пример конкретной ситуации.
Ситуация следующая, один набор данных на сервер работающем под управлением ПО "Пирамида 2000. Сервер", база данных MS SQL Server, второй набор данных находится на сервере под управлением ПО "КТС Энергомера 2.7", база данных Oracle.

Если в статье затрагиваю чей-то интерес, писать сюда: palem[dog]list[dot]ru.


string sqlP2kQuery = sqlGetP2kData;
string sqlKtsQuery = sqlGetKtsData;

DataTable tblP2k = dbManager.sqlConnector.ExecQuery(sqlP2kQuery);
DataTable tblKts = dbManager.oraConnector.ExecQuery(sqlKtsQuery);

DataTable resTable = dbManager.TablePlusTable(tblP2k, tblKts);

dgv1.DataSource = resTable;
dgv1.Update();



~~~ Запрос 1. К базе данных MS SQL Server (sqlGetP2kData)
if OBJECT_ID('tempdb..#telNumber', 'U') is not null
    drop table #telNumber

select
    STATIONID, 
    substring(CONNECTSTR, 4, 11) as TelNumber
into
    #telNumber
from 
    ICMROUTES
where 
    VIRTPORT = 1 

if OBJECT_ID('tempdb..#const', 'U') is not null
    drop table tempdb..#const

select
  const.ITEMID,
    CAST(const.CONSTANTTEXT AS NUMERIC(38, 0)) as value
into
  tempdb..#const
from
  CONSTANTS as const
where
  const.CONSTANTTYPE = 8

if OBJECT_ID('tempdb..#values', 'U') is not null
    drop table #values

select
  *
into
    #values
from
  Piramida2000.dbo.DATA
where
  (Piramida2000.dbo.DATA.DATA_DATE = '28.04.2014')
    and
    (Piramida2000.dbo.DATA.PARNUMBER = 101)
    and
    (Piramida2000.dbo.DATA.ITEM = 2)

select
    convert(varchar(100), 'p2k') as SERVTYPE,
    convert(varchar(100), Folders.ID) as FOLDERID,
    convert(varchar(100), DEVICES.CODE) as DEVICECODE,
    convert(varchar(100), DEVICES.NAME) as OBJECTNAME,
    convert(varchar(100), 'CE303') as METERTYPE,
    convert(varchar(100), tempdb..#const.value) as SN,
    convert(varchar(100), dog.dog) as DOG,
    convert(varchar(100), #telNumber.TelNumber) as TELNUMBER,
    convert(varchar(100), '26.02.2014') as DATETIME,
    convert(varchar(100), 'A-') as ENTYPE,
    convert(varchar(100), Cast(tempdb..#values.VALUE0 as decimal(38, 3))) as KWTCH
from
    Piramida2000.dbo.DEVICES
join
  Piramida2000.dbo.FOLDERS on DEVICES.FOLDERID = FOLDERS.ID
left join
  tempdb..#values on DEVICES.CODE = #values.OBJECT
left join
  tempdb..#const on DEVICES.ID = #const.ITEMID
left join
  #telNumber on DEVICES.ID = #telNumber.STATIONID
left join
    dogovor as dog on (cast(#const.value as varchar(20)) = cast(dog.SN as varchar(20)))
    order by Devices.NAME



~~~ Запрос 2. К базе данных Oracle (sqlGetKtsData)
select 
  TO_CHAR('kts') SERVTYPE ,
  TO_CHAR(dsrobj.dcid) FOLDERID, 
  TO_CHAR(devs.devinc) DEVICECODE, 
  TO_CHAR(dsrobj.name) OBJECTNAME, 
  TO_CHAR('CE201') METERTYPE, 
  TO_CHAR(devs.sernum) SN,  
  TO_CHAR('') DOG,  
  TO_CHAR('') TELNUMBER, 
  '28.04.2014' datetime, 
  TO_CHAR('A-') EnType, 
  TO_CHAR(cdi.val, '9999.999') kWtCh 
from 
  devices devs 
join 
  dsrobj on (dsrobj.dcid = devs.dcid) and (dsrobj.objid = devs.objid)
left join 
  cdi on (cdi.devid = devs.devinc) and (cdi.tariffid = 0) and (cdi.reliable = 3) and (cdi.stamp = to_date('28.04.2014', 'DD.MM.YY'))

понедельник, 21 апреля 2014 г.

C# Drag and Drop файла на WinForm

  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
      this.AllowDrop = true;
      this.DragEnter += new DragEventHandler(Form1_DragEnter);
      this.DragDrop += new DragEventHandler(Form1_DragDrop);
    }

    void Form1_DragEnter(object sender, DragEventArgs e) {
      if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy;
    }

    void Form1_DragDrop(object sender, DragEventArgs e) {
      string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
      foreach (string file in files) Console.WriteLine(file);
    }
  }

вторник, 25 марта 2014 г.

C# Экспорт DataGridView в Excel

Устанавливаем o2007pia.msi, в проекте, через AddReference добавляем COM-объект "Microsoft Excel 12 Object Library":



using Microsoft.Office.Interop.Excel;


...

private void btnSaveXls_Click(object sender, EventArgs e)
{
    // creating Excel Application
    Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();


    // creating new WorkBook within Excel application  
    Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);

    // creating new Excelsheet in workbook  
    Microsoft.Office.Interop.Excel._Worksheet worksheet = null;

    // see the excel sheet behind the program
    app.Visible = true;    
    // store its reference to worksheet
    worksheet = (Worksheet)workbook.ActiveSheet;

    // changing the name of active sheet
    worksheet.Name = "Exported from gridview";

    // storing header part in Excel
    for (int i = 1; i < dgvV.Columns.Count + 1; i++)
    {
        worksheet.Cells[1, i] = dgvV.Columns[i - 1].HeaderText;
    }

    worksheet.get_Range("A1").AutoFit(); 
    worksheet.get_Range("B1").AutoFit();
    worksheet.get_Range("C1").AutoFit();

    // storing Each row and column value to excel sheet
    for (int i = 0; i < dgvV.Rows.Count - 1; i++)
    {
        for (int j = 0; j < dgvV.Columns.Count; j++)
        {
            worksheet.Cells[i + 2, j + 1] = dgvV.Rows[i].Cells[j].Value.ToString();
        }
    }

    // save the application
    workbook.SaveAs("c:\\output.xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

    // Exit from the application
    app.Quit();
}

четверг, 20 марта 2014 г.

Установка и настройка web-сервера (Apache/PHP/MySQL/httpd-virtual-host)

Цель: установить на локальный компьютер web-сервер.

Используемое ПО:
1. Apache 2.2;
2. NuSphere PHPEd 5.9 Professional - в состав входит PHP IDE для разработки сайтов;
3. MySQL Server 5.1;
4. MySQL Front;

Шаг 1. Устанавливаем Apache 2.2 в каталог "C:\webRoot\Apache2.2".

Шаг 2. Устанавливаем PHP, в моем случае это NuSphere PHPEd 5.9 Pro в каталог "C:\webRoot\PhpED".

Шаг 3. Устанавливаем MySQL Server 5.1 в каталог "C:\webRoot\MySQL Server 5.1".

Шаг 4. В самое начало файла "c:\webRoot\Apache2.2\conf\httpd.conf" прописываем строки:
LoadModule php5_module "C:/webRoot/PhpED/php53/php5apache2_2.dll"
AddType application/x-httpd-php .php

и

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
index.html меняем на index.php

Шаг 5. Перезапускаем Apache.

Шаг 6. Копируем в каталог "c:\windows" файлы:
c:\webRoot\PhpED\php53\php.ini
и
c:\webRoot\MySQL Server 5.1\bin\libmySQL.dll

Шаг 7. Перезапускаем Apache.

web-сервер Apache установлен, PHP и MySQL для совместной работы сконфигурированы, теперь настраиваем виртуальные хосты.

Шаг 8. В файл "c:\windows\system32\drivers\etc\hosts" прописываем строки:
127.0.0.1 localhost
127.0.0.1 astra-sv.100ms.local
127.0.0.1 mbdou53.100ms.local
127.0.0.1 astra-blog.local
127.0.0.1 astra-secure.local

Шаг 9. В файле "c:\webRoot\Apache2.2\conf\httpd.conf" снимем комментарий со строки:
# Virtual hosts
# Include conf/extra/httpd-vhosts.conf

чтобы получилось

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Шаг 10. Создаем 4 каталога, для хранения файлов соответствующих четырех сайтов:
C:\webRoot\Apache2.2\htdocs\astra-blog.local
C:\webRoot\Apache2.2\htdocs\astra-secure.local
C:\webRoot\Apache2.2\htdocs\astra-sv.100ms.local
C:\webRoot\Apache2.2\htdocs\mbdou53.100ms.local

Шаг 11. В самый конец файла "c:\webRoot\Apache2.2\conf\extra\httpd-vhosts.conf" добавляем описание четырех виртуальных серверов:
...
<VirtualHost *:80>
ServerAdmin astra-sv@localhost
DocumentRoot "C:/webRoot/Apache2.2/htdocs/astra-sv.100ms.local"
ServerName astra-sv.100ms.local
</VirtualHost>

<VirtualHost *:80>
ServerAdmin astra-blog@localhost
DocumentRoot "C:/webRoot/Apache2.2/htdocs/astra-blog.local"
ServerName astra-blog.local
</VirtualHost>

<VirtualHost *:80>
ServerAdmin mbdou53@localhost
DocumentRoot "C:/webRoot/Apache2.2/htdocs/mbdou53.100ms.local"
ServerName mbdou53.100ms.local
</VirtualHost>

<VirtualHost *:80>
  ServerAdmin astra-secure@local
DocumentRoot "C:/webRoot/Apache2.2/htdocs/astra-secure.local"
ServerName astra-secure.local
</VirtualHost>
...

Шаг 12. Перезапустить Apache.

Шаг 13. Для удобства работы с базами данных MySQL устанавливаем MySQL Front.

пятница, 21 февраля 2014 г.

Установка Oracle x32 на Windows x64

Дистрибутив (файл OracleXE112_Win32.zip) можно взять на официальном сайте корпорации Oracle (требуется регистрация): http://www.oracle.com/technetwork/products/express-edition/downloads/index.html

1. Распаковываем архив и запускаем установщик Oracle XE (DISK1/setup.exe)
2. В ходе установки выбираем директорию для установки Oracle



Внимание!
Под сиcтемой windows с разрядностью 64 бита установщик завершается с ошибкой вида:
«The installer is unable to instantiate the file C:\Users \soarin\AppData\Local\Temp\{E6AD5C75-4961-4B43-870F-1270FB3D4E02}\KEY_XE.reg. The file does not appear to exist.»
Чтоб этого избежать, проделайте следующие шаги (если ОС 32 битная, то выполнять эти шаги под буквами не нужно):

a) Не нажимаем кнопку Next установщика. Отодвинем установщик пока в сторону и откроем в файловом менеджере (например, можно использовать проводник) папку вида

C:\Users\soarin\AppData\Local\Temp\{E6AD5C75-4961-4B43-870F-1270FB3D4E02}\, которая содержит файл OracleMTSRecoveryService.reg. Soarin – в данном случае это имя пользователя в ОС windows, а код в фигурных скобках будет другой.

Можно и с помощью поиска файлов найти эту директорию, указав имя «OracleMTSRecoveryService.reg» и не забыв разрешить поиск в скрытых папках.



б) Сделаем копию файла OracleMTSRecoveryService.reg и переименуем её в «KEY_REG.reg», и вторую копию файла в «KEY_XE.reg»



в) Возвращаемся к установщику Oracle Server и продолжаем процесс инсталляции.

3. Задаём пароль для СУБД (проверяем, что стоит английская языковая раскладка и caps lock отключён!)

4. Жмём кнопку Next и дожидаемся завершения установки.

среда, 19 февраля 2014 г.

Удаление Oracle вручную

Удаление предыдущей установки Oracle.
1. Останавливаем все службы (сервисы), которые начинаются на Oracle
2. Останавливаем службу Distributed Transaction Coordinator (Координатор рапределённых транзакций).
3. Удаляем C:\Program Files\Oracle
4. Удаляем C:\Orant (или др.каталог, куда был установлен оракл ранее)
5. Удаляем в реестре HKCU/Software/Oracle, HKLM/Software/Oracle
6. Удаляем в реестре HKLM/System/ControlSet001/Services/Oracle.......
7. Удаляем в реестре HKLM/System/ControlSet002/Services/Oracle........
8. Удаляем в реестре HKLM/System/CurrentControlSet/Services/Oracle......
9. Перезагружаем компьютер.

Nginx + Let's Crypt

Шаг 1. Установка Certbot # apt-get install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing...