В этой статье я приведу пример создания и использования отчёта Crystal Reports в Visual Studio.
Приведённый пример — это реально рабочий проект по подготовке к печати билетов на обычном лазерном принтере.
Начнём с того что нам потребуется источник данных поэтому вначале создадим проект в котором будем использовать наш отчёт и создадим источник данных который выгрузим в XML файл, для более простого и наглядного создания нового отчёта и его настройки.
Здесь речь пойдёт об основных способах приведения типов в MySQL. Заранее следует оговорить тот момент, что в большинстве случаев приведение типов в MySQL сработает автоматически, например:
//Выполнив запрос:
select 1+'1';
//Получим результат: 2
Однако в ряде случаев требуется специальное приведение типов, о них и пойдёт речь далее.
Случай первый — Сравнение строк (ключевое слово BINARY)
В СУБД MySQL сравнение тестовых строк не зависит от регистра сравниваемых строк. Например, если мы будем сравнивать строки «Чупакабра крут» и «ЧУПАКАБРА КРУТ», то MySQL сочтёт их идентичными.
Часто бывают случаи, когда создать событие для элементов управления необходимо программно, например когда нам надо выполнить определённые манипуляции с элементами и данными которые они содержат до того как начнут обрабатываться события на изменение выбранного значения, на клик мышкой, на изменение содержимого и многие другие.
Для этого целесообразно создавать события не в дизайнере формы а программно. Как это сделать я здесь и покажу на примере.
Пример будет получать источник данных в ComboBox, и по событию SelectedIndexChanged — будет выводить индекс выбранного элемента, вот это событие мы и создадим программно.
Итак приступаем:
DataSet ds = new DataSet(); //Создаем источник данных.
EventHandler handler; //Создаем делегат.
Клаcc Strings включает множество методов сравнения, поиска и изменения строковых значений. Здесь я приведу список часто необходимых (лично мне) возможностей этого класса:
Empty — свойство определяющее пустая ли строка;
Compare() — сравнивает две строки;
CompareOrdinal() — позволяет сравнивать строки в независимости от региональных настроек;
Concat() — объединяет две и более строки в новую строку;
Copy() — Копирует исходную строку;
Оконные функции — это такие функции которые на основе окна (набора записей) вычисляют скалярное (одиночное) значение. Это значение определяется с помощью инструкции 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# довольно просто, вот так:
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 типа таблиц MyISAM. Если в операторе create table не задать тип таблицы то будет назначен именно этот тип.
Каждая MyISAM таблица хранится на диске в трёх файлах (в поддиректории каталога mysql/data), имена этих файлов совпадают с названием таблицы, а расширение может принимать одно из следующих значений:
.frm — структура таблицы, этот файл содержит информацию об именах и типах столбцов и индексов;
.MYD — в этом файле содержатся данные таблицы;
.MYI — в этом файле содержатся индексы таблицы.
Не так давно наткнулся на очень полезный ресурс для всех разработчиков приложений для работы с базами данных, называется ресурс Connection Strings.
Ресурс представляет собой сборку всевозможных строк подключения к самым различным базам данных с использованием самых разнообразный провайдеров и технологий.
Ну просто очень полезный ресурс.
Вот ссылка: http://www.connectionstrings.com
Ресурс правда на английском, но для тех кому надо это я полагаю не проблема.
Здесь я приведу некоторые примеры полезных запросов в MySQL которые, как я думаю, многим могут пригодиться. Во всяком случае, когда я искал такую информацию, я так и не смог найти ничего дельного. Поэтому дошёл своим умом помаленьку. Данные запросы помогут сэкономить время и не писать процедуры для обработки данных, которые работают в разы медленнее, или помогут сделать эти процедуры значительно быстрее. Запросы показывают как в MySQL можно делать изменение записей в таблице, с перебором по всем необходимым значениям и с проверкой необходимых условий но без всяких переборов, только средствами MySQL одним запросом.
Итак приступим:
Вставка в таблицу данных из выборки:
insert into `Table1` (`Field1`,`Field2`)
select `Table2`.`Field1`, `Table2`.`Field2`
from `Table2` where `Field1`=0
Вот такая вот задача появилась, в случае отсутствия данных в таблице результат выборки максимального значения в поле выдаст значение null, можно конечно обрабатывать полученный результат в программе, но значительно проще возложить этот функционал на скрипт.
Делается это вот так:
SELECT (CASE WHEN MAX(ID) IS NULL THEN '0' ELSE MAX(ID) + 1 END) AS Expr1
FROM MyTable
Теперь, если в выборке будет пусто, то-есть null, то в качестве результата выборки будет передан 0.