пятница, 29 июля 2011 г.

SQL: If Exists Update Else Insert


This is a pretty common situation that comes up when performing database operations.  A stored procedure is called and the data needs to be updated if it already exists and inserted if it does not.  If we refer to the Books Online documentation, it gives examples that are similar to:

IF EXISTS (SELECT * FROM Table1 WHERE Column1='SomeValue')
    UPDATE Table1 SET (...) WHERE Column1='SomeValue'
ELSE
    INSERT INTO Table1 VALUES (...)

This approach does work, however it might not always be the best approach.  This will do a table/index scan for both the SELECT statement and the UPDATE statement.  In most standard approaches, the following statement will likely provide better performance.  It will only perform one table/index scan instead of the two that are performed in the previous approach.

UPDATE Table1 SET (...) WHERE Column1='SomeValue'
IF @@ROWCOUNT=0
    INSERT INTO Table1 VALUES (...)

The saved table/index scan can increase performance quite a bit as the number of rows in the targeted table grows.
Just remember, the examples in the MSDN documentation are usually the easiest way to implement something, not necessarily the best way.  Also (as I re-learned recently), with any database operation, it is good to performance test the different approaches that you take.  Sometimes the method that you think would be the worst might actually outperform the way that you think would be the better way. 

среда, 27 июля 2011 г.

Как установить Windows 7 на нетбуке


В случае если вы желаете установить Windows 7 на нетбук с другой предустановленной операционной системой или вам требуется переустановить существующую копию Windows 7, вы можете выполнить свое намерение несколькими различными способами в зависимости от наличия в вашем распоряжении внешнего привода для чтения DVD-дисков, DVD-диска с дистрибутивом Windows 7 или подлинного образа диска Windows 7, приобретенного в Microsoft Store.

Проверка готовности вашего нетбука для Windows 7

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

Загрузка компьютера с внешнего устройства: DVD-привода или флэш-накопителя USB

Как правило, на большинстве нетбуков отсутствует внутренней привод для чтения DVD-дисков. Для установки Windows 7 на таком нетбуке вам потребуется прибегнуть либо к использованию внешнего DVD-привода, либо к загрузочному флэш-накопителю USB (“флешки”). В обоих случаях вам потребуется произвести загрузку нетбука с внешнего устройства.
Особенности настройки нетбука для загрузки с внешних устройств определяются конкретной моделью. Для получения дополнительных сведений обратитесь к документации вашего нетбука, на веб-сайт его производителя или к страницамУстановка и переустановка Windows 7 и Запуск Windows с компакт-диска или DVD-диска.

Установка Windows 7 на нетбуке с помощью внешнего DVD-привода

Если в вашем распоряжении имеется внешний привод для чтения DVD-дисков, вы можете произвести установку Windows 7 с установочного диска.
Внешний привод для чтения DVD-дисковУстановку Windows 7 на нетбуке с установочного диска можно произвести при помощи внешнего DVD-привода
Для этого:
  1. Подключите внешний DVD-привод к вашему нетбуку. Как правило, для подключения к компьютеру внешнего DVD-привода используется разъем USB.
  2. Вставьте в DVD-привод установочный диск Windows 7.
  3. Для обновления предыдущей версии Windows до Windows 7 запустите процесс установки Windows 7 из существующей операционной системы. Для полной переустановки существующей операционной системы загрузите нетбук с установочного диска Windows 7. Более подробно об установке и обновлении читайте здесь.
В случае отсутствия в вашем распоряжении внешнего DVD-привода, вы также можете произвести установку Windows 7 с установочного диска в вашем местном компьютерном магазине.

Установка Windows 7 на нетбуке с помощью флэш-накопителя USB при наличии установочного диска Windows 7

Вы можете и самостоятельно создать загрузочный USB-накопитель, используя файлы c загрузочного диска Windows 7. Для этого вам потребуются:
  • Флэш-накопитель USB объемом 4 Гб или более.
  • Установочный диск Windows 7.
  • Компьютер под управлением Windows Vista или Windows 7, оснащенный приводом для чтения DVD-дисков.

Подготовка флэш-накопителя USB

Перед тем как приступить к созданию загрузочного флэш-накопителя USB, вам необходимо выполнить его форматирование. Обратите внимание, что в ходе форматирования все содержащиеся на флэш-накопителе данные будут утеряны.
  1. Подключите к нетбуку флэш-накопитель USB.
  2. Откройте Командную строку с повышенными привилегиями (пройдите в меню “Пуск” > Все программы > Стандартные, произведите щелчок правой кнопкой мыши на приложении “Командная строка” и выберите “Запуск от имени администратора”).
    Запуск Командной строки с повышенными привилегиямиЗапустите Командную строку с повышенными привилегиями, выбрав “Запуск от имени администратора”
  3. В окне командной строки последовательно введите и выполните (клавиша Enter) следующие команды:
    diskpart
    list disk
    В окне будет отображен список накопителей, установленных на вашем нетбуке. Определите номер вашего флэш-накопителя USB, сверив размер вашего накопителя с приведенными в списке (в примере на изображении – Диск 1).
    Подготовка флэш-накопителяОпределите номер вашего флэш-накопителя
  4. Произведите форматирование вашего флэш-накопителя USB, последовательно вводя и выполняя приведенные ниже команды, где X – цифра вашего флэш-накопителя USB, определенная в предыдущем шаге (в примере на изображении – 1):
    select disk X
    clean
    create partition primary
    select partition 1
    active
    format fs=NTFS
    assign
    exit 
    ВНИМАНИЕ! Внимательно проверьте, что вы указываете цифру именно для флеш-накопителя. В случае, если вы укажете неверную цифру – номер жесткого диска вашего компьютера, вы можете потерять все данные.
Форматирование флэш-накопителя USB через Командную строкуПроизведите форматирование флэш-накопителя USB

Создание загрузочного флэш-накопителя USB

После выполнения этих шагов вы можете перейти к созданию загрузочного флэш-накопителя USB. Для этого:
  1. Вставьте загрузочный диск Windows 7 в DVD-привод.
  2. Откройте Командную строку с повышенными привилегиями.
  3. Перейдите в корневой каталог установочного диска Windows 7, последовательно введя и выполнив следующий команды, где D – буква вашего DVD-привода:
    D :
    cd D :\boot
    Командная строка WindowsПерейдите в корневой каталог установочного диска Windows 7
  4. Введите и примените следующую команду, где F – буква вашего флэш-накопителя USB, чтобы добавить загрузочный код Windows 7 на флэш-накопитель USB.
    bootsect /nt60 F :
Командная строка WindowsДобавьте загрузочный код Windows 7 на ваш флэш-накопитель USB
Для завершения создания загрузочного флэш-накопителя USB вам необходимо произвести копирование всех файлов с установочного диска Windows 7 на ваш флэш-накопитель. Для этого:
  1. Через окно “Компьютер” найдите и откройте DVD-привод с установочным диском Windows 7 и флэш-накопитель USB.
  2. В окне DVD-привода выделите все файлы, содержащиеся на диске, щелкните правой кнопкой мыши по любому из файлов и выберите пункт “Копировать”.
  3. Перейдите в окно вашего флэш-накопителя USB, щелкните правой кнопкой мыши по пустому пространству в окне и выберите пункт “Вставить”.
  4. Дождитесь окончания процесса копирования файлов.
  5. По завершении этого процесса вы можете использовать ваш флэш-накопитель USB для установки Windows 7 на нетбуке. Для проведения полной установки вам потребуется загрузить нетбук с флэш-накопителя USB.

Установка Windows 7 на нетбуке с помощью флэш-накопителя USB при наличии оригинального ISO-образа Windows 7

На веб-сайте Microsoft Store вы можете приобрести Windows 7 в виде образа установочного диска ISO, предназначенного для дальнейшей записи на внешний носитель. В случае отсутствия возможности установить Windows 7 с установочного диска или записать образ на DVD-диск, вы можете произвести установку с флэш-накопителя USB. Для упрощения процесса записи Microsoft предлагает инструментWindows 7 USB/DVD Download Tool (страница на английском языке).
Для создания установочного флэш-накопителя USB вам потребуется:
  • Компьютер или нетбук под управлением Windows XP SP2, Windows Vista или Windows 7 (32- или 64-разрядная версия).
  • Подлинный образ Windows 7 в формате ISO, приобретенный на веб-сайтеMicrosoft Store.
  • Чистый флэш-накопитель USB объемом не менее 4 Гб.
Для создания установочного флэш-накопителя USB следуйте приведенной ниже инструкции:
Скачайте приложение Windows 7 DVD/USB Download Tool (страница на английском языке) с веб-сайта Microsoft Store и установите его на ваш нетбук.
Запустите Windows 7 DVD/USB Download Tool.
Окно приложения Windows 7 USB/DVD Download ToolОкно приложения Windows 7 USB/DVD Download Tool
Укажите путь к образу установочного диска. Для этого нажмите кнопку “Browse” и найдите соответствующий файл образа ISO на вашем компьютере. По завершении нажмите кнопку “Next”.
Выбор образа для записи в приложении Windows 7 USB/DVD Download ToolНажмите кнопку “Browse” и найдите файл образа на вашем компьютере
Окно приложения Windows 7 USB/DVD Download ToolПосле выбора файла образа нажмите кнопку “Next”
Выберите соответствующий носитель информации для записи. Для создания установочного флэш-накопителя USB нажмите кнопку “USB device”.
Окно приложения Windows 7 USB/DVD Download Tool, выбор носителя информации для записиВыберите “USB device” для записи образа Windows 7 на флэш-накопитель USB
Укажите флэш-накопитель USB, на который следует произвести запись (накопитель “МОЯ ФЛЕШКА” на изображении ниже). После выбора флэш-накопителя, нажмите на кнопку “Begin copying” для начала записи.
Окно приложения Windows 7 USB/DVD Download Tool, выбор флэш-накопителя USB для записиВыберите ваш флэш-накопитель USB из ниспадающего списка
В случае если флэш-накопитель не подключен к компьютеру, будет отображено окно, сообщающее о том, что совместимых устройств USB не обнаружено (No compatible USB devices detected).
Окно приложения Windows 7 USB/DVD Download Tool, совместимых устройств USB не обнаруженоЕсли флэш-накопитель USB не подключен, приложение уведомит вас о том, что совместимых устройств USB не обнаружено
В таком случае, подключите флэш-накопитель USB и нажмите на кнопку обновления “Refresh”, расположенную рядом с ниспадающим списком.
Обратите внимание, что в ходе записи все файлы, содержащиеся на флэш-накопителе, будут удалены. Для продолжения нажмите кнопку “Erase USB Device”.
Флэш-накопитель USB должен быть отформатирован перед началом записиФлэш-накопитель USB должен быть отформатирован перед началом записи
Далее Windows 7 DVD/USB Download Tool произведет форматирование вашего флэш-накопителя USB и запись образа Windows 7. Продолжительность этого этапа зависит от производительности вашего оборудования.
Процесс записи образа Windows 7 на флэш-накопитель USBWindows 7 DVD/USB Download Tool произведет запись установочного образа Windows 7 на ваш флэш-накопитель USB
По завершении этого процесса вы можете использовать ваш флэш-накопитель USB для установки Windows 7 на нетбуке. Для проведения полной установки вам потребуется загрузить нетбук с флэш-накопителя USB.
Загрузочный флэш-накопитель USB успешно созданПосле завершения процесса записи установочного флэш-накопителя USB вы можете использовать его для установки Windows 7

четверг, 21 июля 2011 г.

Exporting a DataGridView to Excel


  1. Add a reference to the ‘Microsoft Office 11.0 Object Library’ to your project from COM components.
  2. Create an object of the ApplicationClass in the Excel namespace
    Excel.ApplicationClass ExcelApp = new Excel.ApplicationClass();
  3. Add a new workbook to the object of the Application class. The parameter to the Add method below is the name of the workbook. We are going to provide the name later (while saving the file). So Type.Missing can be used here.
    ExcelApp.Application.Workbooks.Add(Type.Missing);
  4. Change properties of the Workbook
    ExcelApp.Columns.ColumnWidth = 30;
  5. Copy the contents of the DataGridView object to the cells of the Excel Application object. In the code below ReportDataGrodView is the name of my DataGridView object.
    for (int i = 0; i < ReportDataGridView.Rows.Count; i++)
    {
        DataGridViewRow row = ReportDataGridView.Rows[i];
        for(int j=0; j< row.Cells.Count; j++)
        {
            ExcelApp.Cells[i+1, j+1] = row.Cells[j].ToString();
        }
    }
  6. Save the workbook at any suitable location. In the code below FileName is a string representing full path to the name of the file. This can be obtained from a SaveFileDialog if you want.
    ExcelApp.ActiveWorkbook.SaveCopyAs(FileName);
    ExcelApp.ActiveWorkbook.Saved = true;
  7. Exit the Excel Application and free up the resources
    ExcelApp.Quit();

среда, 20 июля 2011 г.

Check uncheck all checkboxes in a gridview using javascript

Step 1:

Put this script below head tag

<script type="text/javascript" language="javascript">

function changeCheckState(chk)
{
var frm = document.forms[0];
for (i=0; i<frm.length; i++)
{
if (frm.elements[i].id.indexOf('checkBox') != -1)
{
frm.elements[i].checked = chk;
}
}
}

</script>

Step :2

Put this checkbox in header template

<asp:CheckBox ID="checkBox" runat="server" />

Step 3:

Put this checkbox in Itemtemplate

<input id="changeCheckStateId" onclick="changeCheckState(this.checked);" runat="server" type="checkbox" />

пятница, 15 июля 2011 г.

LINQ: Select where object does not contain items from list


dump this into a more specific collection of just the ids you don't want
var notTheseBarIds = filterBars.Select(fb => fb.BarId);
then try this:
fooSelect = (from f in fooBunch
             where !notTheseBarIds.Contains(f.BarId)
             select f).ToList();
or this:
fooSelect = fooBunch.Where(f => !notTheseBarIds.Contains(f.BarId)).ToList();