Рассылка закрыта
При закрытии подписчики были переданы в рассылку "BloggLand и Я | Блоггландия" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
В тридцать четвёртом выпуске рассылки '.Net Собеседник' вы можете узнать о том,
Информационный Канал Subscribe.Ru |
.Net Собеседник #34
Содержание- От автора
- Обзор новостей
- Как создать класс-помощник для создания таблиц на Visual C# .NET
- Время кода - Ещё раз о Repeater'e
- Форумы .Net на www.sql.ru
От автора
Здравствуйте, коллеги!
«Microsoft вовсю рекламирует применение CLR в следующей версии SQL Server 2005…»
«Я выбираю COBOL, так как 78% программ во всем мире написано на этом языке.»
С одной стороны звучит как: «Я буду ездить на Запорожце, потому что 78% страны на нём ездит», с другой – ну выбирайте, кто ж вам мешает? :)
«Я хочу подчеркнуть следующее: «на любом из языков» подразумевает, что вы будете писать на одном из языков Microsoft. А что делать, если вы любите Java, а не C#?»
Есть такая особенность– Microsoft фактически создала многоязычную платформу, в то время как Java получился многоплатформенным языком. Но в тоже время нужно помнить, что Java – собственность компании Sun и наверняка за использование его на платформе .Net нужно платить лицензионные отчисления. Кроме того, поддерживать технологию конкурента – топить самого себя. Ну и C# всё же не так уж и не похож на Java, брат-близнец практически, переход особых сложностей не вызовет. Хотя чем чёрт не шутит, помня относительно недавние лобзания глав Sun и Microsoft, может и выпустят Java для .Net.
“Продолжим цитирование. «Многие задачи, которые было неудобно или затруднительно программировать на TransactSQL, лучше реализовать средствами управляемого кода...» С этим я согласен. Но это не те задачи, которые следует программировать в рамках базы данных. … Единственная задача SQL — извлечение данных и манипулирование ими. Точка.”
«Уничтожение послойной архитектуры — фундаментально неверный подход. Он угрожает целостности данных и возвращает нас в худшие времена файловых операций при обработке данных.»
«Несомненно, маленький Джонни, получивший сертификат администратора БД, считает себя профессионалом и способен пролезть внутрь СУБД, но может ли кто-то ответить мне, что за преимущества получит его фирма?»
На этом всё - желаю интересного чтения.
Обзор новостей
-
Live Journal блог
от hDrummer'a
- Есть идея собрать все выпуски рассылки в один chm файл. Нужно это кому-нибудь или идея ненужная? А может быть уже кто-то сам сделал такой вариант? Жду ваших ответов.
-
Обновление .netCHARGE 4.2
- Поддержка интеграции без dll или дополнительных зависимостей. Поддержка нового процессора/шлюза Concord EFS (First Data).
-
Spatially
Aware выпустила дополнение “США в растре” (растрированные США ;) для Map Suite
- Этот компонент работает как в Winforms, так и в Webforms-приложениях, а также в редакции Map Engine приложения Map Suite.
-
Вышел модуль
UML: SDE 2.0 для Visual Studio .NET
- Visual Paradigm объявила о выходе SDE 2.0 для Visual Studio.NET, мощного модуля UML для VS.NET. Инструмент поддерживает последние диаграммы и нотации UML, генерацию кода, реверсный инжиниринг для языков .NET, включая C++, C#, VB.NET и ASP.NET.
-
Вышел form.suite4.net
- form.suite4.net – дизайнер графического интерфейса для приложений Microsoft .NET Windows и Web Forms. Главное назначение этого дизайнера – увеличить продуктивность разработки за счёт устранения повторяющихся этапов разработки – например, привязки форм к бизнес-классам.
-
Вышел Calendar Tools 2.0 для .NET
- Содержит 6 элементов управления Windows Forms, обладающие общими свойствами и методами, что делает лёгким обмен данными.
-
Вышел
RapidSpell Desktop .NET 3.5
- Keyoti выпустила RapidSpell Desktop .NET v3.5, проверщик орфографии Windows Form с кучей новых функций.
-
Вышел DotNetBar Suite 4.7
- DevComponents LLC объявила о выходе DotNetBar Suite 4.7. Новый релиз содержит стиль подобный на Office 2003 и множество новых улучшений и особенностей. DotNetBar Suite включает меню, панели инструментов, плавающие окна, боковые панели, панели с закладками, всплывающие подсказки и т.д. С поддержкой темl Office 2003, XP, 2000 и Windows XP.
Статья номера
Как создать класс-помощник для создания таблиц на Visual C# .NET
ЯЗЫК: C#
Автор статьи: Microsoft
ПЕРЕВОД: Чужа В.Ф. ака hDrummer
Обзор
Класс-оболочка DataSetHelper
Создадим класс в Visual Studio .NET из шаблона Class Library и заменим его содержимое на:
public class DataSetHelper
{ public DataSet ds; public DataSetHelper(DataSet DataSet) { ds = DataSet; } public DataSetHelper() { ds = null; } } |
Метод CreateTable (Вариант 1)
Вызов метода в первом случае будет выглядеть так:
DataTable dt = dsHelper.CreateTable("CT1", "Name String, ID Int32 Required, Field3 String Name + ID"); |
fieldname datatype[ REQUIRED|expression], ...
- Поддерживаемые типы данных – все члены пространства имён System, такие как Int32 или String. Нельзя использовать типы, спецефичные языку, такие как int или Integer. Также не надо явно указывать пространство имён System в списке полей.
- По умолчанию все поля опциональны, т.е. на добавлять слово REQUIRED после типа данных для того, чтобы запретить значения NULL в этом поле.
- Выражением является любое корректное выражение, поддерживаемое классом DataColumn.
public DataTable CreateTable(string
TableName, string FieldList) { DataTable dt = new DataTable(TableName); DataColumn dc; string[] Fields= FieldList.Split(','); string[] FieldsParts; string Expression; foreach(string Field in Fields) { FieldsParts = Field.Trim().Split(" ".ToCharArray(), 3); // allow for spaces in the expression // добавляем имя поля и тип данных if (FieldsParts.Length == 2) { dc = dt.Columns.Add(FieldsParts[0].Trim(), Type.GetType("System." + FieldsParts[1].Trim(),true,true)); dc.AllowDBNull = true; } else if (FieldsParts.Length == 3) // добавляем имя поля, тип данных, выражение { Expression = FieldsParts[2].Trim(); if (Expression.ToUpper() == "REQUIRED") { dc = dt.Columns.Add(FieldsParts[0].Trim(), Type.GetType("System." + FieldsParts[1].Trim(), true, true)); dc.AllowDBNull = false; } else { dc = dt.Columns.Add(FieldsParts[0].Trim(), Type.GetType("System." + FieldsParts[1].Trim(), true, true), Expression); } } else { throw new ArgumentException("Invalid field definition: '" + Field + "'."); } } if (ds != null) { ds.Tables.Add(dt); } return dt; } |
Метод CreateTable (Версия 2)
DataTable dt = dsHelper.CreateTable("CT2","Name String, ID Int32 Required, Field3 String Name + ID", "ID"); |
public DataTable CreateTable(string
TableName, string FieldList , string
KeyFieldList) { DataTable dt = CreateTable(TableName, FieldList); string[] KeyFields = KeyFieldList.Split(','); if (KeyFields.Length > 0) { DataColumn[] KeyFieldColumns= new DataColumn[KeyFields.Length]; int i; for (i = 1; i==KeyFields.Length-1 ; ++i) { KeyFieldColumns[i] = dt.Columns[KeyFields[i].Trim()]; } dt.PrimaryKey = KeyFieldColumns; } return dt; // нет необходимости добавлять к DataSet – вызов метода CreateTable это делает } |
Использование класса
using System.Data DataSet ds; DataSetHelper dsHelper; ds = new DataSet(); dsHelper = new DataSetHelper(ds); DataTable dt = dsHelper.CreateTable("CT1", "Name String, ID Int32 Required, Field3 String Name + ID"); dt.Rows.Add(new Object[] {"Jones", 4}); dt.Rows.Add(new Object[] {"Jones", 8}); dt.Rows.Add(new Object[] {"Thompson", 42}); dataGrid1.SetDataBinding(ds,"CT1"); DataTable dt = dsHelper.CreateTable("CT2","Name String, ID Int32 Required, Field3 String Name + ID", "ID"); dt.Rows.Add(new Object[] {"Tom Jones", 45}); dt.Rows.Add(new Object[] {"Will Smith", 58}); dt.Rows.Add(new Object[] {"Davey Jones", 84}); dt.Rows.Add(new Object[] {"Rob Thompson", 42}); dataGrid1.SetDataBinding(ds, "CT2"); |
Что можно улучшить:
Можно улучшить парсер так, чтобы можно было указывать максимальную длину
строковых полей. Например, можно использовать такой синтаксис:
String(50)
Проблемы
Выражение не должно содержать запятых, даже в кавычках. Пример неправильного выражения: LastName+", "+FirstName
Вот и всё.
Время кода
Ещё раз о
Repeater'e
ЯЗЫК: C#
АВТОР: Чужа В.Ф., dotnetgrains.sql.ru
В последнее время все отчёты, которые требуются в моих веб-приложениях, я
создаю только на базе Интернет Эксплорера. Весь процесс описан мною в статье
«Создаём отчёты своими руками», которая будет опубликована в первом номере
журнала «Алгоритм», а один интересный момент я опишу здесь.
<ItemTemplate> <tr> <td><%#GetIdentityQ1%> </td> <td><%#GetIDcode(Container.DataItem)%> </td> <td><%#DataBinder.Eval(Container.DataItem, "fio")%> </td> <td align="right"><%#GetCost4Tax(Container.DataItem)%></td> </tr> </ItemTemplate> |
А затем, перед выводом значения некого поля пользователю, нам необходимо произвести с ним некие действия, ну, например, отформатировать и добавить денежную еденицу:
protected string GetCost4Tax(object
o) { decimal osc = 0; if ((o as DataRowView)["Cost4Tax"]!=DBNull.Value) { osc = Convert.ToDecimal((o as DataRowView)["Cost4Tax"]); } return osc.ToString("0.00")+" грн."; } |
Конечно, есть и другие способы для достижения такого эффекта, но сегодня мы познакомились именно с этим.
{К содержанию}
Форумы .Net - вопросы оставшиеся без ответа
Про
запрос
можно
ли из ActiveX на HTML page вызвать функцию скрипта
подключать
разные Item при определенных условиях
подскажите
с классами на asp.net страничках
На этом тридцать четвёртый выпуск .Net Собеседника закончен.
До следующего номера.
Чужа Виталий Ф. aka hDrummer, MCAD, MCDBA, MCP
hdrummer@sql.ru - жду ваши предложения и замечания.
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.prog.dotnetgrains |
Отписаться |
В избранное | ||