Skip to content

Instantly share code, notes, and snippets.

@WideWord
Created June 8, 2017 19:55
Show Gist options
  • Save WideWord/08d9945caac54644b82535a150110710 to your computer and use it in GitHub Desktop.
Save WideWord/08d9945caac54644b82535a150110710 to your computer and use it in GitHub Desktop.
Imports System.Data
Imports System.Data.SqlClient
Imports System.Math
Imports System.IO
Imports System.Data.OleDb
Imports System.Data.Odbc
Imports System
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim I As Integer
' Connect to DB. Перечень параметров - типовой (см.мануалы). Главные - имя БД (database), логин (uid) и пароль (pwd).
Dim cn As New SqlConnection("Persist Security Info=True; database=Computer; server=DNS-VB\BCT5422;; uid=student_hs;pwd=student;Connect Timeout=30")
' ОSqlConnection - объект, определяющий новое подключение к БД.
Dim da_ADRESS As New SqlDataAdapter 'датаадптер для загрузки информации относительно таблицы в ds
' Создается объект SqlDataAdapter для загрузки информации относительно таблицы в ds
Dim row_ADRESS As Integer
' row_ADRESS - целоч.переменная, определяет ч-ло строк в запросе-выборке, кот.реализует наша прогармма
Dim ds_ADRESS As New DataSet
' Создает конкр. экземпляр объекта DataSet, в кот.будут записаны рез-ты сработавшего запроса (16 записей)
'**********
' Текст СКЛ-запроса, также м.б. в текстовой переменной
da_ADRESS.SelectCommand = New SqlCommand
' Создается новая Sql-команда, кот. будет настроена на наше подключение cn и тип команды - текст запроса.
da_ADRESS.SelectCommand.Connection = cn
da_ADRESS.SelectCommand.CommandType = CommandType.Text
da_ADRESS.SelectCommand.CommandText = "SELECT type FROM dbo.Product GROUP BY type"
' Образец кода решает задачу подключения к БД, реализует запрос (выборку инфы из БД)
' и визуализирует рез-ты в виде сеточной формы.
'**********************************************
da_ADRESS.TableMappings.Add("Table", "ADRESS")
' данная строка "прикрепляет" к объекту Датасет таблицу с именем ADRESS.
' возможности объекта Датасет - создание неск.таблиц, кот. взаимосвязаны м.собой.
'*********************************
' Load Data
row_ADRESS = da_ADRESS.Fill(ds_ADRESS)
' оператор, трансформирующий подготовку в действие - цепляет строку подлючения к БД по Sql-запрос выбирается инфа,
' кот.размещается в объект Датасет в ту таблицу, кот.мы прописали.
'По итогу формируется целоч.переменная, определяющая кол-во строк в рез-те вып-я запроса.
'****************
DataGridView1.DataSource = ds_ADRESS
'**********************
DataGridView1.DataMember = "ADRESS"
' ДВе строки сверху визуализируют рез-ты работы программы,
'в частности - сеточная форма настраивается на конкр.вид Датасета и визуализирует конкретные таблицы, в данному случае ADRESS
'**************************
GoTo m
Dim ID_GIS As Integer
ID_GIS = 0 ' ключ формируется при добавлении записей в ГИС
Dim N_BTS As String
' Ниже следует цикл, кот.перебирает все строки-записи нашего объекта
Dim row As Integer
For I = 1 To row_ADRESS 'по всем записям
' нумерация с нуля
N_BTS = ds_ADRESS.Tables("ADRESS").Rows(I - 1).Item("model")
Next I
' Задача - симольно обработать данные в колонке с им. model
'(посимвольно поместить данные в м-в Tst, добавить * и поместить рез-т в ту же колонку)
' обработка символьной информации
Dim G As String
Dim Tst(110) As String
Dim Tst_(110) As String
Dim II As Integer
Dim JJ As Integer
Dim VAR_1 As String
Dim VAR_2 As String
' цикл объявлен так, чтобы проанализировать все данные в объекте с учетом того, что 1я строка помещается в объекте с 0 индексом
For I = 0 To row_ADRESS - 1
VAR_1 = ds_ADRESS.Tables("ADRESS").Rows(I).Item("model")
G = VAR_1
' переписываем знач-е во вспомог.перем. JJ
For JJ = 0 To 110
Tst(JJ) = "" 'Обнулили весь массив
Tst_(JJ) = "" 'Обнулили весь массив
Next JJ
II = Len(G) 'ЧИСЛО ЗНАКОВ В БТС
' Определяем знач-е длины текстовой перем-й
For JJ = 1 To II
Tst(JJ) = Mid(G, JJ, 1) 'Нашинковали строчки по символам
Next JJ
' посимвольная разборка перем. JJ
VAR_2 = ""
For JJ = 1 To II
VAR_2 = VAR_2 & Tst(JJ)
Next JJ
' посимвольная сборка переменной из м-ва Tst
VAR_2 = VAR_2 & "*"
' подписываем звездочку к посл. символу
ds_ADRESS.Tables("ADRESS").Rows(I).Item("model") = VAR_2
'обновленное знач-е помещ. в объект DataSet.
Next I
m:
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim A As Double
Dim b As Double
A = 3.14 / 2
b = Sin(A)
End Sub
Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' источник кн
' делать(отчет)
Dim I As Integer
Dim SQL_ As String
SQL_ = "SELECT type FROM dbo.Product GROUP BY type"
Dim CONNECTION_STR_ As String
CONNECTION_STR_ = "Persist Security Info=True; database=Computer; server=DNS-VB\BCT5422;; uid=student_hs;pwd=student;Connect Timeout=30"
Dim cn As New SqlConnection(CONNECTION_STR_)
Dim da_SOURCE As New SqlDataAdapter 'датаадптер для загрузки информации относительно таблицы в ds
Dim row_SOURCE As Integer
Dim ds_SOURCE As New DataSet
'**********
da_SOURCE.SelectCommand = New SqlCommand
da_SOURCE.SelectCommand.Connection = cn
da_SOURCE.SelectCommand.CommandType = CommandType.Text
da_SOURCE.SelectCommand.CommandText = SQL_
'**********************************************
da_SOURCE.TableMappings.Add("Table", "SOURCE")
'*********************************
' Load Data
row_SOURCE = da_SOURCE.Fill(ds_SOURCE)
'****************
DataGridView1.DataSource = ds_SOURCE
'**********************
DataGridView1.DataMember = "SOURCE"
'**************************
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'ПРИЕМНИК КН
Dim CONNECTION_STR_ As String
CONNECTION_STR_ = "Persist Security Info=True; database=Computer; server=DNS-VB\BCT5422;; uid=student_hs;pwd=student;Connect Timeout=30"
Dim cn As New SqlConnection(CONNECTION_STR_)
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
' ЭТО КОД УДАЛЕНИЯ ВСЕХ ДАННЫХ ИЗ ТАБЛИЦЫ БД
If cn.State = ConnectionState.Closed Then
cn.Open()
End If ' ОТКРЫЛИ ПОДКЛЮЧЕНИЕ
'
Dim I As Integer
Dim cmd As SqlCommand
cmd = New SqlCommand
' Dim da As New SqlDataAdapter
Dim SQL As String
SQL = "DELETE from Report_1" ' СФОРМИРОВАЛИ СКЛ КОММАНДУ
cmd.Connection = cn ' ПОДКЛЮЧИЛИ КОМАНДУ К КОННЕКТУ
cmd.CommandText = SQL '
I = cmd.ExecuteNonQuery ' ПАРАМЕТР I ЗРАНИТ ЧИСЛО ЗАПИСЕЙ К КОТОРЫМ ПРИМЕНИЛАСЬ ПРОЦЕДУРА
' cn.Close()
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'Dim I As Integer
Dim SQL_ As String
SQL_ = "SELECT ID, type_product, models FROM dbo.Report_1"
'Dim CONNECTION_STR_ As String
'CONNECTION_STR_ = "Persist Security Info=True; database=computer; server=DNS-VB\BCT5422;; uid=student_hse; pwd=student; Connect Timeout=30"
' cn As New SqlConnection(CONNECTION_STR_)
Dim da_ADRESS As New SqlDataAdapter 'датаадптер для загрузки информации относительно таблицы в ds
Dim row_ADRESS As Integer
Dim ds_ADRESS As New DataSet
'**********
da_ADRESS.SelectCommand = New SqlCommand
da_ADRESS.SelectCommand.Connection = cn
da_ADRESS.SelectCommand.CommandType = CommandType.Text
da_ADRESS.SelectCommand.CommandText = SQL_
'**********************************************
da_ADRESS.TableMappings.Add("Table", "ADRESS")
'*********************************
' Load Data
row_ADRESS = da_ADRESS.Fill(ds_ADRESS)
'****************
DataGridView1.DataSource = ds_ADRESS
'**********************
DataGridView1.DataMember = "ADRESS"
'**************************
Dim row_H_IND As DataRow
' Dim row_H_IND As DataRow
For I = 1 To 3
row_H_IND = ds_ADRESS.Tables("ADRESS").NewRow
row_H_IND("ID") = I
ds_ADRESS.Tables("ADRESS").Rows.Add(row_H_IND)
Next I
'********************SQL
Dim daCustomers As New SqlDataAdapter(SQL_, cn)
'*****************************************************
'создали новый датаадаптер для осуществления операции обновления
Dim cbCustomers As New SqlCommandBuilder(daCustomers)
' используется для построения команд СКЛ
Try 'внесение изменений в правильном порядке открыли
Dim ChangedTable As New DataTable
'таблица в которую пишутся изменение
ChangedTable = ds_ADRESS.Tables("ADRESS").GetChanges
'*********************************
'ds-объект датасет из которого берутся данные Общий для всех кнопок
If Not ChangedTable Is Nothing Then
daCustomers.Update(ChangedTable)
End If
Catch ex As Exception 'если исключительная ситуация то стреляет сообщение
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub Button4_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'
'ВИТРИНА КН
'объявление переменных
Dim I As Integer
Dim SQL_ As String
'SQL_ = "SELECT type FROM dbo.Product GROUP BY type" 'запрос на группировку типов продукции
SQL_ = "SELECT type, COUNT(*) AS count_ FROM dbo.Product GROUP BY type"
' подключение к БД. Убедиться, что логин и пароль правильные;
' что мы подключаемся к нужной базе;
' что запрос работоспособен;
Dim CONNECTION_STR_ As String
CONNECTION_STR_ = "Persist Security Info=True; database=Computer; server=DNS-VB\BCT5422;; uid=student_hs;pwd=student;Connect Timeout=30"
Dim cn As New SqlConnection(CONNECTION_STR_)
'из бд перeносим в объект программы
'объявляем объекты
Dim da_SOURCE As New SqlDataAdapter 'датаадптер для загрузки информации относительно таблицы в ds
Dim row_SOURCE As Integer
Dim ds_SOURCE As New DataSet
'переносим значения изБД в программу
da_SOURCE.SelectCommand = New SqlCommand
da_SOURCE.SelectCommand.Connection = cn
da_SOURCE.SelectCommand.CommandType = CommandType.Text
da_SOURCE.SelectCommand.CommandText = SQL_
'**********************************************
da_SOURCE.TableMappings.Add("Table", "SOURCE")
'*********************************
' Load Data
row_SOURCE = da_SOURCE.Fill(ds_SOURCE)
'****************
DataGridView1.DataSource = ds_SOURCE
'**********************
DataGridView1.DataMember = "SOURCE"
'**************************
' Dim CONNECTION_STR_ As String
'CONNECTION_STR_ = "Persist Security Info=True; database=computer; server=DNS-VB\BCT5422;; uid=student_hse; pwd=student; Connect Timeout=30"
' Dim cn As New SqlConnection(CONNECTION_STR_)
' удаление всех данных из витрины
If cn.State = ConnectionState.Closed Then
cn.Open()
End If ' ОТКРЫЛИ ПОДКЛЮЧЕНИЕ
'
' Dim I As Integer
Dim cmd As SqlCommand
cmd = New SqlCommand
' Dim da As New SqlDataAdapter
Dim SQL As String
SQL = "DELETE from Report_1" ' СФОРМИРОВАЛИ СКЛ КОММАНДУ
cmd.Connection = cn ' ПОДКЛЮЧИЛИ КОМАНДУ К КОННЕКТУ
cmd.CommandText = SQL '
I = cmd.ExecuteNonQuery ' ПАРАМЕТР I ЗРАНИТ ЧИСЛО ЗАПИСЕЙ К КОТОРЫМ ПРИМЕНИЛАСЬ ПРОЦЕДУРА
' cn.Close()
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Dim SQL_ As String
'вывод витрины в интерфейс, в окошко под кнопками
' Делаем запрос для того, чтобы положить в витрину данные
SQL_ = "SELECT ID, type_product, models FROM dbo.Report_1"
'Dim CONNECTION_STR_ As String
'CONNECTION_STR_ = "Persist Security Info=True; database=computer; server=DNS-VB\BCT5422;; uid=student_hse; pwd=student; Connect Timeout=30"
' cn As New SqlConnection(CONNECTION_STR_)
'загружаем из витрины дданые в объект программы
Dim da_ADRESS As New SqlDataAdapter 'датаадптер для загрузки информации относительно таблицы в ds
Dim row_ADRESS As Integer
Dim ds_ADRESS As New DataSet
'**********
da_ADRESS.SelectCommand = New SqlCommand
da_ADRESS.SelectCommand.Connection = cn
da_ADRESS.SelectCommand.CommandType = CommandType.Text
da_ADRESS.SelectCommand.CommandText = SQL_
'**********************************************
da_ADRESS.TableMappings.Add("Table", "ADRESS")
'*********************************
' В объекте ds_ADRESS есть таблица с виртуальным именем ADRESS, в кот.мы закладываем полученные данные
' Load Data
row_ADRESS = da_ADRESS.Fill(ds_ADRESS)
'****************
DataGridView1.DataSource = ds_ADRESS
'**********************
DataGridView1.DataMember = "ADRESS"
'**************************
' формируем цикл, где переменная row_SOURCE берется из события формирования данных, кот.мы кладем в витрину
'создание и заполнение строчек в витрине
Dim row_H_IND As DataRow
For I = 1 To row_SOURCE
row_H_IND = ds_ADRESS.Tables("ADRESS").NewRow 'создание строк
row_H_IND("ID") = I 'заполнение колонки ID
row_H_IND("type_product") = ds_SOURCE.Tables("SOURCE").Rows(I - 1).Item("type") 'заполнение коолнки type_product
row_H_IND("models") = ds_SOURCE.Tables("SOURCE").Rows(I - 1).Item("count_") 'заполнение коолнки models
ds_ADRESS.Tables("ADRESS").Rows.Add(row_H_IND) 'изменение объекта, добавление в него заполненной информации
Next I
' этот цикл формирует значения двух полей в витрине.
' Первое поле - ключевое поле ID, а второе - имя товара, которое прописано в событии генерации исходных данных.
'добавление заполненных данных в БД (обновление витрины)
'********************SQL
Dim daCustomers As New SqlDataAdapter(SQL_, cn)
'*****************************************************
'создали новый датаадаптер для осуществления операции обновления
Dim cbCustomers As New SqlCommandBuilder(daCustomers)
' используется для построения команд СКЛ
Try 'внесение изменений в правильном порядке открыли
Dim ChangedTable As New DataTable
'таблица в которую пишутся изменение
ChangedTable = ds_ADRESS.Tables("ADRESS").GetChanges
'*********************************
'ds-объект датасет из которого берутся данные Общий для всех кнопок
If Not ChangedTable Is Nothing Then
daCustomers.Update(ChangedTable)
End If
Catch ex As Exception 'если исключительная ситуация то стреляет сообщение
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub Button5_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
'
'1 КН (первый шаг алгоритма)
'объявление переменных
Dim I As Integer
Dim SQL_ As String
' запрос к полям репорта type
SQL_ = "SELECT ID, type_product FROM dbo.Report_1"
' подключение к БД. Убедиться, что логин и пароль правильные;
' что мы подключаемся к нужной базе;
' что запрос работоспособен;
Dim CONNECTION_STR_ As String
CONNECTION_STR_ = "Persist Security Info=True; database=Computer; server=DNS-VB\BCT5422;; uid=student_hs;pwd=student;Connect Timeout=30"
Dim cn As New SqlConnection(CONNECTION_STR_)
'из бд перeносим в объект программы
'объявляем объекты
Dim da_SOURCE As New SqlDataAdapter 'датаадптер для загрузки информации относительно таблицы в ds
Dim row_SOURCE As Integer
Dim ds_SOURCE As New DataSet
'переносим значения из БД в программу
da_SOURCE.SelectCommand = New SqlCommand
da_SOURCE.SelectCommand.Connection = cn
da_SOURCE.SelectCommand.CommandType = CommandType.Text
da_SOURCE.SelectCommand.CommandText = SQL_
'**********************************************
da_SOURCE.TableMappings.Add("Table", "SOURCE")
'*********************************
' Load Data
row_SOURCE = da_SOURCE.Fill(ds_SOURCE)
'****************
DataGridView1.DataSource = ds_SOURCE
'**********************
DataGridView1.DataMember = "SOURCE"
'**************************
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
'
'2 КН (второй шаг алгоритма)
'объявление переменных
Dim I As Integer
Dim SQL_ As String
' отсортированные в обратном порядке по ID поля (чтобы в первой строке таблицы было поле с максимальным ID)
SQL_ = "SELECT TOP (100) PERCENT ID, type_product FROM dbo.Report_1 ORDER BY ID DESC"
' подключение к БД. Убедиться, что логин и пароль правильные;
' что мы подключаемся к нужной базе;
' что запрос работоспособен;
Dim CONNECTION_STR_ As String
CONNECTION_STR_ = "Persist Security Info=True; database=Computer; server=DNS-VB\BCT5422;; uid=student_hs;pwd=student;Connect Timeout=30"
Dim cn As New SqlConnection(CONNECTION_STR_)
'из бд перeносим в объект программы
'объявляем объекты
Dim da_SOURCE As New SqlDataAdapter 'датаадптер для загрузки информации относительно таблицы в ds
Dim row_SOURCE As Integer
Dim ds_SOURCE As New DataSet
'переносим значения изБД в программу
da_SOURCE.SelectCommand = New SqlCommand
da_SOURCE.SelectCommand.Connection = cn
da_SOURCE.SelectCommand.CommandType = CommandType.Text
da_SOURCE.SelectCommand.CommandText = SQL_
'**********************************************
da_SOURCE.TableMappings.Add("Table", "SOURCE")
'*********************************
' Load Data
row_SOURCE = da_SOURCE.Fill(ds_SOURCE)
'****************
DataGridView1.DataSource = ds_SOURCE
'**********************
DataGridView1.DataMember = "SOURCE"
'**************************
End Sub
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
'новая КН
Dim CONNECTION_STR_ As String
CONNECTION_STR_ = "Persist Security Info=True; database=Computer; server=DNS-VB\BCT5422;; uid=student_hs;pwd=student;Connect Timeout=30"
Dim cn As New SqlConnection(CONNECTION_STR_)
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
' ЭТО КОД УДАЛЕНИЯ ВСЕХ ДАННЫХ ИЗ ТАБЛИЦЫ БД
If cn.State = ConnectionState.Closed Then
cn.Open()
End If ' ОТКРЫЛИ ПОДКЛЮЧЕНИЕ
'
Dim I As Integer
Dim cmd As SqlCommand
cmd = New SqlCommand
' Dim da As New SqlDataAdapter
Dim SQL As String
SQL = "DELETE from Report_1" ' СФОРМИРОВАЛИ СКЛ КОММАНДУ
cmd.Connection = cn ' ПОДКЛЮЧИЛИ КОМАНДУ К КОННЕКТУ
cmd.CommandText = SQL '
I = cmd.ExecuteNonQuery ' ПАРАМЕТР I ЗРАНИТ ЧИСЛО ЗАПИСЕЙ К КОТОРЫМ ПРИМЕНИЛАСЬ ПРОЦЕДУРА
' cn.Close()
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'Dim I As Integer
Dim SQL_ As String
SQL_ = "SELECT ID, type_product, models FROM dbo.Report_1"
'Dim CONNECTION_STR_ As String
'CONNECTION_STR_ = "Persist Security Info=True; database=computer; server=DNS-VB\BCT5422;; uid=student_hse; pwd=student; Connect Timeout=30"
' cn As New SqlConnection(CONNECTION_STR_)
Dim da_ADRESS As New SqlDataAdapter 'датаадптер для загрузки информации относительно таблицы в ds
Dim row_ADRESS As Integer
Dim ds_ADRESS As New DataSet
'**********
da_ADRESS.SelectCommand = New SqlCommand
da_ADRESS.SelectCommand.Connection = cn
da_ADRESS.SelectCommand.CommandType = CommandType.Text
da_ADRESS.SelectCommand.CommandText = SQL_
'**********************************************
da_ADRESS.TableMappings.Add("Table", "ADRESS")
'*********************************
' Load Data
row_ADRESS = da_ADRESS.Fill(ds_ADRESS)
'****************
DataGridView1.DataSource = ds_ADRESS
'**********************
DataGridView1.DataMember = "ADRESS"
'**************************
Dim row_H_IND As DataRow
' Dim row_H_IND As DataRow
For I = 1 To 3
row_H_IND = ds_ADRESS.Tables("ADRESS").NewRow
row_H_IND("ID") = I
ds_ADRESS.Tables("ADRESS").Rows.Add(row_H_IND)
Next I
'********************SQL
Dim daCustomers As New SqlDataAdapter(SQL_, cn)
'*****************************************************
'создали новый датаадаптер для осуществления операции обновления
Dim cbCustomers As New SqlCommandBuilder(daCustomers)
' используется для построения команд СКЛ
Try 'внесение изменений в правильном порядке открыли
Dim ChangedTable As New DataTable
'таблица в которую пишутся изменение
ChangedTable = ds_ADRESS.Tables("ADRESS").GetChanges
'*********************************
'ds-объект датасет из которого берутся данные Общий для всех кнопок
If Not ChangedTable Is Nothing Then
daCustomers.Update(ChangedTable)
End If
Catch ex As Exception 'если исключительная ситуация то стреляет сообщение
MessageBox.Show(ex.Message)
End Try
End Sub
End Class
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment