Динамический вывод картинок в отчётах Crystal Report на C#

В данной публикации я расскажу каким образом в отчёт Crystal Report можно вывести требуемое количество изображений (например из базы данных).

!!! Для того чтобы публикация была понятна, рекомендуется к обязательному прочтению предыдущая статья Используем Crystal Report в C#.

Собственно, перепробовав много методов (в основном описанных на зарубежных сайтах — в Ру-нете как то не особо изучен этот вопрос), нашёл действительно работоспособный и эффективный метод вывода изображений в отчёт Crystal Report, который заключается в передаче изображений в отчёт через источник данных.

Подробнее

Программируем лазерный считыватель на терминалах сбора данных Cipher (9300) C#

Программируем лазерный считыватель на CipherПришло время написать вторую публикацию по программированию считывающих устройств терминалов сбора данных. В этой публикации я приведу пример программирования лазерного считывателя на терминалах Cipher 9300.
Здесь я приведу простой пример создания программы на Windows CE, которая будет работать со считывателем на терминалах Cipher 93XX. В целом, исходный код данной программы будет основан на примерах, которые приведены в руководстве по программированию, но с небольшим своим усовершенствованием. Вообще удивительно, почему те кто составлял руководство и SDK для разработчиков к этому устройству, не озаботились выложить хотя бы парочку рабочих примеров.

Итак, по порядку. Начнём с того что нам потребуется для разработки.

Как я уже говорил, нам потребуется SDK, по сути нам будут нужны 3 библиотеки, две под .NET, и одна для считывателя которая просто должна быть с проектом: Reader_Ce_Net.DLL, SystemApi_Ce_Net.DLL, ReaderDll_CE.dll.

Подробнее

Используем 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() — Копирует исходную строку;

Подробнее

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

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

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

Подробнее

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

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

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

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

Подробнее

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

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

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

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


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

Подробнее