Рассылка закрыта
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Программирование (VB,C#,ASP,.NET): новости, советы, примеры
Выпуск # 723Приветствую вас, любители высоких технологий! Вот и очередной выпуск рассылки. За неделю на сайте появилось много новых и интересных материалов, некоторые из которых вы сможете увидеть в этом выпуске. Содержание выпускаЧитайте в этом выпуске: Если у вас есть вопросы по программированию или работе с компьютером, не стесняйтесь, спрашивайте.Форумы Kbyte.RuНа форумах Kbyte.Ru постоянно появляются новые интересные темы и обсуждения. В этом выпуске представлены лишь новые темы, с момента прошлой рассылки. Кстати, любой желающий может на форумах Kbyte.Ru совершенно свободно получить помощь грамотных специалистов в области программирования, да и в целом информационных технологий. Задать свой вопрос прямо сейчас Нормализация @rusiko 04.04.2013 08:05 Привет всем. Скажите пожайлуста что такое первая, вторая и третья нормальные формы в SQL. В интернете я нашел много статей на эту тему,
но почти все они одинаково излагают эту тему. Кто-нибудь может мне объяснить это как-то по своему, как-то понятно. Спасибо заранее. Ответ #1 @Алексей Немиро 04.04.2013 10:48 Сложная тема :) Само по себе, нормализация - это приведение базы в идеальный вид по мнению Кристофера Дейта, который внес свой вклад в развитие релаксационных баз данных, в коих число входит и SQL Server. В первой форме необходимо, чтобы данные были полностью уникальными. Чтобы не было дубликатов данных, в том числе: строк с полностью идентичными данными, колонок с одинаковыми названиями. Важный момент, нужно чтобы не было логических дубликатов данных. Остальные формы зависят от первой, но стремятся еще более максимально объединить одинаковую информацию, чтобы уменьшить объем лишних данных (дубликатов). Например, есть холодильник. Требуется, чтобы на первой полке лежали только красные яблоки, на второй - желтые, на третей - зеленые. Неправильная логика хранения яблок может быть следующей: Первая полка | Вторая полка | Третья полка ------------------------------------------------ Красное яблоко | Желтое яблоко | Зеленое яблоко Первая полка | Вторая полка | Третья полка ------------------------------------------------ Красное яблоко | Желтое яблоко | Зеленое яблоко | Желтое яблоко | Зеленое яблоко | Желтое яблоко | Зеленое яблоко | Желтое яблоко | | Желтое яблоко | | Желтое яблоко | | Желтое яблоко | Все полки в холодильнике - это по сути один логический объект. Делая для каждой полки отдельную колонку в таблице - это дубликаты, что не соответствует первой нормальной форме. Происходит расширение таблицы по горизонтали, что само по себе плохо (хотя иногда может и не быть другого варианта, но это уже другой вопрос). В идеале структура должна быть такой: Полка | Яблоко ----------------------------- Первая полка | Красное яблоко ----------------------------- Вторая полка | Желтое яблоко ----------------------------- Третья полка | Зеленое яблоко Яблок может быть множество, если они будут хранить в куче, то сложно будет выбрать конкретное яблоко. Например: Полка | Яблоко ----------------------------- Первая полка | Красное яблоко ----------------------------- Вторая полка | Желтое яблоко | Желтое яблоко | Желтое яблоко ----------------------------- Третья полка | Зеленое яблоко | Зеленое яблоко | Зеленое яблоко | Зеленое яблоко | Зеленое яблоко Происходит группировка логически идентичных объектов в ячейке данных, т.е. не соответствует первой нормальной форме. Яблоки должны быть разделены: Полка | Яблоко ----------------------------- Первая полка | Красное яблоко ----------------------------- Вторая полка | Желтое яблоко ----------------------------- Вторая полка | Желтое яблоко ----------------------------- Вторая полка | Желтое яблоко ----------------------------- Третья полка | Зеленое яблоко ----------------------------- Третья полка | Зеленое яблоко ----------------------------- Третья полка | Зеленое яблоко ----------------------------- Третья полка | Зеленое яблоко ----------------------------- Третья полка | Зеленое яблоко Полка | Продукт | Цвет --------------------------------- Первая полка | Яблоко | Красный --------------------------------- Вторая полка | Яблоко | Желтый --------------------------------- Третья полка | Яблоко | Зеленый Полка | Номер продукта | Продукт | Цвет --------------------------------------------------- Первая полка | 1 | Яблоко | Красный --------------------------------------------------- Вторая полка | 2 | Яблоко | Желтый --------------------------------------------------- Вторая полка | 3 | Яблоко | Желтый --------------------------------------------------- Вторая полка | 4 | Яблоко | Желтый --------------------------------------------------- Третья полка | 5 | Яблоко | Зеленый --------------------------------------------------- Третья полка | 6 | Яблоко | Зеленый --------------------------------------------------- Третья полка | 7 | Яблоко | Зеленый --------------------------------------------------- Третья полка | 8 | Яблоко | Зеленый --------------------------------------------------- Третья полка | 9 | Яблоко | Зеленый Номер полки | Название полки --------------------------------- 1 | Первая полка --------------------------------- 2 | Вторая полка --------------------------------- 3 | Третья полка Номер полки | Номер продукта | Продукт | Цвет --------------------------------------------------- 1 | 1 | Яблоко | Красный --------------------------------------------------- 2 | 2 | Яблоко | Желтый --------------------------------------------------- 2 | 3 | Яблоко | Желтый --------------------------------------------------- 3 | 4 | Яблоко | Желтый --------------------------------------------------- 3 | 5 | Яблоко | Зеленый --------------------------------------------------- 3 | 6 | Яблоко | Зеленый --------------------------------------------------- 3 | 7 | Яблоко | Зеленый --------------------------------------------------- 3 | 8 | Яблоко | Зеленый --------------------------------------------------- 3 | 9 | Яблоко | Зеленый Номер типа продукта | Название продукта --------------------------------- 1 | Яблоко Номер цвета | Название цвета --------------------------------- 1 | Красный --------------------------------- 2 | Желтый --------------------------------- 3 | Красный Номер полки | Номер продукта | Номер типа продукта | Номер цвета ------------------------------------------------------------------- 1 | 1 | 1 | 1 ------------------------------------------------------------------- 2 | 2 | 1 | 2 ------------------------------------------------------------------- 2 | 3 | 1 | 2 ------------------------------------------------------------------- 3 | 4 | 1 | 2 ------------------------------------------------------------------- 3 | 5 | 1 | 2 ------------------------------------------------------------------- 3 | 6 | 1 | 3 ------------------------------------------------------------------- 3 | 7 | 1 | 3 ------------------------------------------------------------------- 3 | 8 | 1 | 3 ------------------------------------------------------------------- 3 | 9 | 1 | 3 По сути, каждый программист, с получением опыта, стремится к подобной структуре. Однако, такая, вертикальная структура имеет свои подводные камни, если перестараться, может получиться "как всегда". Нужно учитывать ресурсы и реальные возможности при проектировании базы данных. Учитывать потенциальные объем, варианты расширения. Если сделать полностью гибкую базу и эта гибкость окажется невостребованной, то это в конечном итоге может негативно отразиться на производительности. Также нужно умело использовать гибкость базы при работе с ней. Стараться делать меньше JOIN-ов (избыток JOIN-ов в вертикальной структуре может серьезно тормознуть базу), в меру создавать индексы (если перестараться, опять же можно снизить производительность). Нужно стремиться упрощать все, ибо простота - это есть совершенство. Параметризованный запрос @capetownn 02.04.2013 17:41 Среда Visual Basic STUDIO’2010 Professional Не совпадает число значений запроса и число результирующих полей. В таблице 11 полей, я же задал только для 4-х. Public Con As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " +
" Data Source=E:\CD_MY_new\DATA\My_Pension.mdb")
Public DT As New Data.DataTable
Dim sqlCommand As New OleDbCommand("", Con)
sqlCommand.Parameters.Clear()
sqlCommand.Parameters.Add("@PensNum", SqlDbType.NVarChar, 10)
sqlCommand.Parameters.Add("@LastName", SqlDbType.NVarChar, 20)
sqlCommand.Parameters.Add("@FirstName", SqlDbType.NVarChar, 15)
sqlCommand.Parameters.Add("@patronymic", SqlDbType.NVarChar, 25)
' а заодно и
sqlCommand.CommandText = "INSERT INTO [Pensioner] VALUES(@PensNum, @LastName," &
"@FirstName, @patronymic)"
For Each row As DataRow In DT.Rows
Dim sPensNum As String = row("NumPensCertificate").ToString()
Dim sLastName As String = row("LastName").ToString()
Dim sFirstName As String = row("FirstName").ToString()
Dim sPatronymic As String = row("patronymic").ToString()
sqlCommand.Parameters("@PensNum").Value = sPensNum
sqlCommand.Parameters("@LastName").Value = sLastName
sqlCommand.Parameters("@FirstName").Value = sFirstName
sqlCommand.Parameters("@patronymic").Value = sPatronymic
DT.Clear() ' Очищаем таблицу DT
Con.Open()
sqlCommand.CommandText = "INSERT INTO [Pensioner] VALUES(@PensNum, @LastName, @FirstName, @patronymic)"
sqlCommand.ExecuteNonQuery() ' Не совпадает число значений запроса и число результирующих полей.
DA = New OleDb.OleDbDataAdapter(sqlCommand) 'Через адаптер получаем результаты запроса
Me.DataGridView1.DataSource = DT ' Привязываем Грид к источнику данных
Con.Close() ' Закрываем соединение.
Next Ответ #1 @Алексей Немиро 02.04.2013 18:59 Запрос неправильный, нужно явно указывать имена полей, в которые добавляются данные: INSERT INTO [Pensioner] (PensNum, LastName, FirstName, patronymic) VALUES (@PensNum, @LastName, @FirstName, @patronymic) Сохранение картинки из RichTextBox-а @iskandar 30.03.2013 18:49 Привет всем! Как можно сохранить картинку из RichTextBox-а в графическом формате(jpg,png,bmp...)? Спасибо! Ответ #1 @inv.DS
31.03.2013 09:00 Какой язык программирования? Ответ #2 @Алексей Немиро 02.04.2013 09:54 Из кода RTF можно выдернуть. Как загрузить фалы на F-bit.ru @Crash666 30.03.2013 10:01 Алексей вы будете гордится
мной я сам сделал это!!!! Вот скрины и код: Using w As New FoxTools.Lib.Net.Web() w.Method = FoxTools.Lib.Net.Enums.HttpMethod.POST w.Url = "http://f-bit.ru/" w.ResponseAutoEncoding = True w.ContentType = "multipart/form-data" w.Queries.AddQuery("PHP_SESSION_UPLOAD_PROGRESS", "test") w.Queries.AddFile("uploadfile", "test.txt", IO.File.ReadAllBytes("D:\Desktop\test.txt")) w.Queries.AddQuery("action", "upload") w.Queries.AddQuery("pass", "") w.Queries.AddQuery("pass_2", "") w.Queries.AddQuery("delete", "1") w.Queries.AddQuery("description", "") w.Queries.AddQuery("show_options", "false") Dim result As String = w.ExecuteString() Dim Url As String = Regex.Match(result, "(.*?)result(.*?)1(.*?)url(.+?)(.+?)(.+?)(?<Url>.+?)"",""delete_url"":""0""}").Groups("Url").Value Process.Start(Url) End Using Ответ #1 @Алексей Немиро 30.03.2013 10:24 Отлично! Создание каталога в 64 битных ОС @Леонид
30.03.2013 05:22 Подскажите или поправте меня пожалуйста... Проблемма такова: Код на VB6 необходимо создать программно директорию куда потом и сохраним файл, для его последующего чтения. вот как я пробую: Private Sub Command1_Click() If Dir(k) <> "" Then k = "C:\temp\Рабочий" MkDir (k) End If FN = FreeFile a = InputBox("введите имя файла") FName = k & "\" & a & ".txt" Open FName For Output As #FN Print #FN, Text1.Text Close #FN Shell "cmd /X /C start " & FName, vbHide End Sub На XP работает нормально, но при переносе на V7(64-бит) выдает ошибку типа файл не найден...Да походу и не сохранился никуда...Может недостаточно прав для сохранения в новых ОС или ...как можно обойти проблемму? Сам перехожу на VB.net, но программку на VB6 все же хочется адаптировать к новым осям..Спасибо всем... Ответ #1 @inv.DS 30.03.2013 08:02 Уважаемый, в Windows Seven программы надо запускать от имени администратора. k = "C:\Рабочий" Set FSO = CreateObject("Scripting.FileSystemObject") File = k If FSO.FileExists(File) Then MsgBox "Каталог " & File & " существует = " & FSO.FileExists(File) Else MsgBox "Каталог не найден, сейчас будет создан!" MkDir (k) End If FN = FreeFile a = InputBox("введите имя файла") FName = k & "\" & a & ".txt" Open FName For Output As #FN Print #FN, Text1.Text Close #FN Shell "cmd /X /C start " & FName, vbHide Ответ #2 @Леонид 31.03.2013 05:13 Запускать от имени администратора это и так понятно..... по коду Спасибо..каталог создается, но 05 строка игнорируется при наличии каталога переходит на 07 строку и выдает ошибку "75" то есть условие 04 If FSO.FileExists(File) Then 05 MsgBox "Каталог " & File & " существует = " & FSO.FileExists(File) 06 Else не выполняется???? Ответ #3 @inv.DS
31.03.2013 08:52 Dim k As String Private Sub Command1_Click() k = "D:\Ðàáî÷èé\" If Dir(k) <> "" Then ' Åñëè ôàéëà/ïàïêè íå ñóùåñòâóåò, òî ôóíêöèÿ âîçâðàùàåò "", åñëè æå ñóùåñòâóåò, òî ôóíêöèÿ âîçâðàùàåò èìÿ ôàéëà MsgBox "Ôàéë ñóùåñòâóåò" GoTo Try Else MsgBox "Ôàéë íå ñóùåñòâóåò" FN = FreeFile a = InputBox("ââåäèòå èìÿ ôàéëà") If a = "" Then MsgBox "Âû íå óêàçàëè äàííûõ!": End FName = k & "\" & a & ".txt" Open FName For Output As #FN Print #FN, Text1.Text Close #FN Shell "cmd /X /C start " & FName, vbHide End If Exit Sub Try: FN = FreeFile a = InputBox("ââåäèòå èìÿ ôàéëà") FName = k & "\" & a & ".txt" Open FName For Output As #FN Print #FN, Text1.Text Close #FN Shell "cmd /X /C start " & FName, vbHide End Sub На вот тебе рабочий код! Кстати "Спасибо" можно сказать и кнопочкой "Спасибо", или повышением репутации! Привет всем.Что то не получается отловить ссылку.Раньше ловил.-Может забанели как .Хотя ответ приходит от POST запроса.. <p style=""line-height:" 2; font-size: 12px;"><a href="http://url.html" target="_blank">http://url.html</a><br></p> Dim mw As Match = Regex.Match(soqww, "<a href=([^\x3e]*) target=""_blank"">(?<Bllw>.*?)</a><br></p>") Label6.Text = (mw.Groups("Bllw").Value) target=""_blank""\x3E(?<Bllw>.*?)</a><br></p>") Ответ #1 @Алексей Немиро 29.03.2013
14:49 \x3E - это же закрывающаяся треугольная скобка (>). <a href=(все что угодно, кроме >) target=""_blank"">(?<Bllw>.*?)</a><br></p>Естественно, не будет работать, т.к. между > и "все что угодно" стоит "target=""_blank"". Так: <a([^\x3e]*?)>(?<Bllw>.*?)</a> <a(.*?)>(?<Bllw>.*?)</a> Ответ #2 @i32 29.03.2013 14:57 Ответ #3 @i32 29.03.2013 15:08 Так тег же со скобкой target="_blank"> Dim soqww As String = thepage Match = Regex.Match(soqwt, "target\x3D""\x5Fblank""\x3E(?<Bllw>.*?)\x3C/a><br></p>") Label6.Text = (mw.Groups("Bllw").Value) Ответ #4 @Алексей Немиро 29.03.2013 15:30 Нужен весь текст, в котором делается поиск. Проблема может быть в пробелах/переводах строк, в регистре символов. Можно попробовать добавить опции Multiline, Singlieline: Match = Regex.Match(soqwt, "target\x3D""\x5Fblank""\x3E(?<Bllw>.*?)\x3C/a><br></p>", RegularExpressions.Singleline) Match = Regex.Match(soqwt, "target\x3D""\x5Fblank""\x3E(?<Bllw>.*?)\x3C/a><br></p>", RegularExpressions.Multiline) Match = Regex.Match(soqwt, "target\x3D""\x5Fblank""\x3E(?<Bllw>.*?)\x3C/a><br></p>", RegularExpressions.Singleline Or RegularExpressions.Multiline) Match = Regex.Match(soqwt, "target\x3D""\x5Fblank""\x3E(?<Bllw>.*?)\x3C/a><br></p>", RegularExpressions.Singleline Or RegularExpressions.Multiline Or RegularExpressions.IgnoreCase) Ответ #5 @i32 29.03.2013
20:46 RegexOptions.SingleLine Добавить свой ответ в эту тему · В теме есть еще 6 ответов. Смотреть все ответы. Исходные кодыWPF 3D ListBoxItemsVisual Basic .NET: Интерфейс @Shark1 04.04.2013 04:17 Пример динамического добавления объекта (в данном случае это картинки) в элемент управления ListBox с возможностью повернуть
ListBoxItem относительно оси Y.К данном исходному коду прилагаются файлы примеров. Скачать. Вакансии в ITWeb-дизайнерРоссия, Нижний Новгород | Удаленная работа Web-дизайнерРоссия, Нижний Новгород | Работа
в офисе | 25 000,00 KBP Инженер-программистРоссия, Иркутск | Работа в офисе | 21 750,00 KBP Инженер-программистРоссия, Тюмень | Работа в офисе | 90 000,00 KBP Web-программистРоссия, Тюмень | Работа в офисе | 20 000,00 KBP Программист 1СРоссия, Тюмень | Работа в офисе | 30 000,00 KBP Инженер-программистРоссия, Новосибирск | Работа в офисе | 35 000,00 KBP Web программистРоссия, Новосибирск | Работа в офисе | 15 000,00 KBP Программист 1СРоссия, Ростов-на-Дону | Работа в офисе | 50 000,00 KBP PHP-программистРоссия, Ростов-на-Дону | Работа в офисе | 30 000,00 KBP Все вакансии в IT · Новости мира IT"Доктор Веб" обновляет интернет-сервис Dr.Web AV-DeskКомпания «Доктор Веб» сегодня выпустила агент версии 6.2 в рамках интернет-сервиса Dr.Web AV-Desk, на базе которого предоставляется услуга "Антивирус Dr.Web". Новый агент доступен для сетей с серверами версий 6.0 и 6.1. В нем реализована поддержка новых операционных систем семейства Windows, интегрированы новые модули, ряд компонентов актуализирован, выявленные ошибки исправлены.
Основная новость для подписчиков услуги «Антивирус Dr.Web», использующих новейшие ОС от Microsoft: теперь агент (6.2.0.3210) может работать на компьютерах с установленными ОС Windows 8 и Windows Server 2012. 03.04.2013 10:41 · Категория: Безопасность · Источник: CyberSecurity.ru В DNS-сервере BIND обнаружена критически опасная уязвимостьУязвимость в популярном программном обеспечении BIND, используемом для создания серверов доменных имен, позволяет полностью обрушить работу системы и даже затронуть другие сервисы, работающие на том же оборудовании. С таким заявлением в пятницу выступили разработчики из ISC (Internet Systems Consortium), ведущие разработку BIND.
ISC представляет собой некоммерческую организацию, занимающуюся созданием BIND уже на протяжении многих лет. Здесь сообщили, что уязвимости подвержены только те версии BIND, что ориентированы на работу в Unix/Linux-системах, тогда как Windows-вариант BIND не подвержен данной проблеме. 01.04.2013 14:50 · Категория: Безопасность · Источник: CyberSecurity.ru
Подпишитесь на тематические RSS-ленты Kbyte.Ru, чтобы быть в курсе последних новостей: Основная лента · Форумы (темы и сообщения) · Visual Basic 5.0/6.0 · Visual Basic .NET · C# (Си шарп) · Delphi · JavaScript · ActionScript · ASP .NET · ASP .NET MVC Ищите Kbyte.Ru в социальных сетях FaceBook, ВКонтакте, Twitter. Если вы занимаетесь программированием, то наверняка вам пригодятся хитрые инструменты. Международный портал для программистов и разработчиков Kbyte.Ru основан в 2006 году. Целью портала является объединение программистов и специалистов IT-бизнеса, студентов и преподавателей для обмена опытом и знаниями, оказания помощи во всех делах и начинаниях в области IT. |
В избранное | ||