Используем Crystal Report в C#

В этой статье я приведу пример создания и использования отчёта Crystal Reports в Visual Studio.

Приведённый пример — это реально рабочий проект по подготовке к печати билетов на обычном лазерном принтере.

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

Подробнее

Приведение типов в MySQL

Здесь речь пойдёт об основных способах приведения типов в MySQL. Заранее следует оговорить тот момент, что в большинстве случаев приведение типов в MySQL сработает автоматически, например:

//Выполнив запрос:
select 1+'1';
//Получим результат: 2


Однако в ряде случаев требуется специальное приведение типов, о них и пойдёт речь далее.

Случай первый — Сравнение строк (ключевое слово BINARY)

В СУБД MySQL сравнение тестовых строк не зависит от регистра сравниваемых строк. Например, если мы будем сравнивать строки «Чупакабра крут» и «ЧУПАКАБРА КРУТ», то MySQL сочтёт их идентичными.

Подробнее

Программное добавление событий для элементов управления в C#

Часто бывают случаи, когда создать событие для элементов управления необходимо программно, например когда нам надо выполнить определённые манипуляции с элементами и данными которые они содержат до того как начнут обрабатываться события на изменение выбранного значения, на клик мышкой, на изменение содержимого и многие другие.
Для этого целесообразно создавать события не в дизайнере формы а программно. Как это сделать я здесь и покажу на примере.

Пример будет получать источник данных в ComboBox, и по событию SelectedIndexChanged — будет выводить индекс выбранного элемента, вот это событие мы и создадим программно.

Итак приступаем:

DataSet ds = new DataSet(); //Создаем источник данных.
EventHandler handler; //Создаем делегат.
Подробнее

Работа со строками Strings в C#

Клаcc Strings включает множество методов сравнения, поиска и изменения строковых значений. Здесь я приведу список часто необходимых (лично мне) возможностей этого класса:

Empty — свойство определяющее пустая ли строка;
Compare() — сравнивает две строки;
CompareOrdinal() — позволяет сравнивать строки в независимости от региональных настроек;
Concat() — объединяет две и более строки в новую строку;
Copy() — Копирует исходную строку;

Подробнее

MSSQL Оконные функции - Пример ROWNUMBER OVER PARTITION BY

Оконные функции — это такие функции которые на основе окна (набора записей) вычисляют скалярное (одиночное) значение. Это значение определяется с помощью инструкции OVER.

Пример:

select regioncode, aolevel, offname,
 row_number() over(partition by regioncode order by aolevel, offname) as rownum
 from s_adr_fias
order by regioncode, aolevel, offname;



В данном примере будет сделана выборка в которой для каждого regioncode в поле rownum будет нумерация отсортированных значений aolevel, offname.

Подробнее

Передача параметров приложению в C#

   Собственно особых проблем с передачей параметров приложению при старте делается это в C# довольно просто, вот так:

static void Main( string[] args)
        {
            if (args.Length == 0)
            { MessageBox.Show("Нет параметров"); }
            else
            { MessageBox.Show("1"); }

            
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new FormMain());

        }


Проблема одна лишь в том, что в С# в рамках проекта может быть не один такой Main и чтобы было ясно какому из них должны быть переданы параметры, необходимо указать объект в: Project > Properties > Application > Startup Object.

Вот и всё!

Подробнее

Типы и структура таблиц в MySQL

    База данных MySQL поддерживает несколько разных видов таблиц, все они имеют свои особенные возможности и ограничения.

    Начну своё описание с «родного» для баз данных MySQL типа таблиц MyISAM. Если в операторе create table не задать тип таблицы то будет назначен именно этот тип.
    Каждая MyISAM таблица хранится на диске в трёх файлах (в поддиректории каталога mysql/data), имена этих файлов совпадают с названием таблицы, а расширение может принимать одно из следующих значений:
.frm — структура таблицы, этот файл содержит информацию об именах и типах столбцов и индексов;
.MYD — в этом файле содержатся данные таблицы;
.MYI — в этом файле содержатся индексы таблицы.

Подробнее

Ресурс посвящённый строкам подключения к БД "Connection Strings"

    Не так давно наткнулся на очень полезный ресурс для всех разработчиков приложений для работы с базами данных, называется ресурс Connection Strings.

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

    Ну просто очень полезный ресурс.
    Вот ссылка: http://www.connectionstrings.com
    Ресурс правда на английском, но для тех кому надо это я полагаю не проблема.

Подробнее

MySQL перебор значений без перебора (одним скриптом).

Здесь я приведу некоторые примеры полезных запросов в MySQL которые, как я думаю, многим могут пригодиться. Во всяком случае, когда я искал такую информацию, я так и не смог найти ничего дельного. Поэтому дошёл своим умом помаленьку. Данные запросы помогут сэкономить время и не писать процедуры для обработки данных, которые работают в разы медленнее, или помогут сделать эти процедуры значительно быстрее. Запросы показывают как в MySQL можно делать изменение записей в таблице, с перебором по всем необходимым значениям и с проверкой необходимых условий но без всяких переборов, только средствами MySQL одним запросом.

Итак приступим:

Вставка в таблицу данных из выборки:

insert into `Table1` (`Field1`,`Field2`) 
select `Table2`.`Field1`, `Table2`.`Field2` 
from `Table2` where `Field1`=0
---
Подробнее

Что делать если результат выборки NULL а надо 0.

Вот такая вот задача появилась, в случае отсутствия данных в таблице результат выборки максимального значения в поле выдаст значение null, можно конечно обрабатывать полученный результат в программе, но значительно проще возложить этот функционал на скрипт.

Делается это вот так:

SELECT     (CASE WHEN MAX(ID) IS NULL THEN '0' ELSE MAX(ID) + 1 END) AS Expr1
FROM         MyTable


Теперь, если в выборке будет пусто, то-есть null, то в качестве результата выборки будет передан 0.

Подробнее