Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лапина 23Б отчет

.pdf
Скачиваний:
7
Добавлен:
13.04.2015
Размер:
3.14 Mб
Скачать

Demand_ID = @Demand_ID,

Model_ID =@Model_ID ,

Type_ID = @Type_ID,

Filial_ID = @Filial_ID,

AVTO_Engine = @AVTO_Engine,

AVTO_Body = @AVTO_Body,

AVTO_Volume = @AVTO_Volume,

AVTO_Power = @AVTO_Power,

AVTO_Helm = @AVTO_Helm,

AVTO_Drive = @AVTO_Drive,

AVTO_Cost = @AVTO_Cost,

AVTO_New = @AVTO_New,

AVTO_Year = @AVTO_Year,

AVTO_Distans = @AVTO_Distans

where AVTO_ID = @AVTO_ID END

4.ALTER PROCEDURE [dbo].[SPU_AVTO_SEL]

AS BEGIN select AVTO_ID,

AVTO_Engine, AVTO_Body, AVTO_Volume, AVTO_Power, AVTO_Helm, AVTO_Drive, AVTO_Cost, AVTO_New, AVTO_Year, AVTO_Distans, AVTO_Cost, Type.Type_ID, Type.Type_Type, Model.Model_ID, Model.Model_Model, Filial.Filial_ID, Filial.SFilial_ID, SFilial.SFilial_Name

from AVTO

inner join Type on Type.Type_ID = AVTO.Type_ID inner join Model on Model.Model_ID = AVTO.Model_ID

inner join Filial on Filial.Filial_ID = AVTO.Filial_ID inner join SFilial on SFilial.SFilial_ID = Filial.SFilial_ID END

По аналогии составляться хранимые на оставшиеся таблицы: Client, Demand, Filial.

Хранимые процедурына таблицу-справочник

За пример возьмем один из наших справочников например Filial

1. ALTER PROCEDURE [dbo].[SPU_FILIAL_ADD]

@Street_ID int, @Chief_ID int, @SFilial_ID int, @Filial_INN int, @Filial_Phone int, @Filial_Capesiti int

AS

BEGIN

INSERT INTO Filial (Street_ID,Chief_ID,SFilial_ID,Filial_INN,Filial_Phone,Filial_Capesiti) VALUES (@Street_ID,@Chief_ID,@SFilial_ID,@Filial_INN,@Filial_Phone,@Filial_Capesiti) END

2.ALTER PROCEDURE [dbo].[SPU_FILIAL_DEL] @Filial_ID int

AS BEGIN

delete Filial where

Filial_ID = @Filial_ID END

3.ALTER PROCEDURE [dbo].[SPU_FILIAL_EDIT] @Filial_ID int,

@Street_ID int, @Chief_ID int, @SFilial_ID int, @Filial_INN int, @Filial_Phone int, @Filial_Capesiti int

as BEGIN

UPDATE Filial SET Street_ID = @Street_ID, Chief_ID = @Chief_ID, SFilial_ID = @SFilial_ID, Filial_INN = @Filial_INN,

Filial_Phone = @Filial_Phone, Filial_Capesiti = @Filial_Capesiti

where Filial_ID = @Filial_ID END

4.ALTER PROCEDURE [dbo].[SPU_FILIAL_SEL] AS

BEGIN

select * from Filial END

Так же составляем хранимые процедуры на все оставшиеся справочники : Chief, District, Model, SFilial, Sign, Street, Type.

Хранимые процедуры на таблицыадминистрирования

Таблица логинов

1. ALTER PROCEDURE [dbo].[SPU_LOGIN_ADD]

@Login_Login varchar(50), @Password_Password varchar(50), @Post_Name varchar(50), @Post_ID bigint

AS

BEGIN

INSERT INTO Login

(Login_Login,Post_ID) VALUES (@Login_Login, @Post_ID)

INSERT INTO Password

(Password_Password, Login_ID) VALUES (@Password_Password, SCOPE_IDENTITY())

END

2. ALTER PROCEDURE[dbo].[SPU_LOGIN_DEL]

@Login_Id bigint AS

BEGIN

DELETE FROM Login

where Login.Login_ID = @Login_id

END

3. ALTER PROCEDURE [dbo].[SPU_LOGIN_EDIT]

@Login_Login varchar(100), @Login_Id bigint, @Password_ID bigint,

@Password_Password varchar(50), @Post_Name varchar(50), @Post_ID bigint

AS BEGIN

UPDATE Login set Login_Login = @Login_Login, Post_ID = @Post_ID

where Login_ID= @Login_Id

UPDATE Password set

Password_Password = @Password_Password where

Password_ID = @Password_ID END

4. ALTER PROCEDURE [dbo].[SPU_LOGIN_SEL]

@Login_ID bigint = null, @Login_Login varchar (50)= null, @Password_Password varchar (50)= null

AS

BEGIN

Select * from Login

inner join Password on Password.Login_ID = Login.Login_ID inner join Post on Post.Post_ID = Login.Post_ID

where (@Login_ID is null or Login.Login_ID = @Login_ID)

and (@Password_Password is null or Password.Password_Password = @Password_Password)

and (@Login_Login is null or Login.Login_Login= @Login_Login)

END

Таблица должносей

1. ALTER PROCEDURE [dbo].[SPU_POST_ADD]

@Post_Name varchar(50), @Post_Access1 bit, @Post_Access2 bit, @Post_Access3 bit

AS

BEGIN

Insert into Post (Post_Name, Post_Access1 , Post_Access2 , Post_Access3)

Values

(@Post_Name, @Post_Access1 , @Post_Access2 , @Post_Access3)

END

2. ALTER PROCEDURE [dbo].[SPU_POST_DEL]

@Post_ID bigint = null

AS

BEGIN

Delete Post

wherePost_ID = @Post_ID

END

3. ALTER PROCEDURE [dbo].[SPU_POST_EDIT] @Post_ID bigint,

@Post_Name varchar(50), @Post_Access1 bit, @Post_Access2 bit, @Post_Access3 bit

AS BEGIN

Update Post set Post_Name=@Post_Name where Post_ID=@Post_ID

Update Post set Post_Access1=@Post_Access1 where

Post_ID=@Post_ID

Update Post set Post_Access2=@Post_Access2 where

Post_ID=@Post_ID

Update Post set Post_Access3=@Post_Access3 where

Post_ID=@Post_ID

END

4. ALTER PROCEDURE [dbo].[SPU_POST_SEL]

@Post_ID bigint = null AS

BEGIN

Select * from Post

END

Хранимая процедура SELECTEDPARAM

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

ALTER PROCEDURE [dbo].[SELECTEDPARAM]

@storedProcedureName varchar(100)

AS BEGIN

select PARAMETER_NAME from INFORMATION_SCHEMA.PARAMETERS where SPECIFIC_NAME = @storedProcedureName

END

Хранимая процедура на организацию поиска

ALTER PROCEDURE [dbo].[SPU_CLIENT_SEARCH]

@Femeli varchar(50) AS

BEGIN

SELECT Client_ID,Client_Femeli,Client_Name,Client_Second,Client_Sing,Client_Account, Client_Price

FROM Client

where Client_Femeli like @Femeli+'%' END

Реализация клиентской части БД (СУБД)

Клиентская часть СУБД исполняется на компьютере пользователя и обеспечивает интерфейс пользователя с базой данных, а именно: преобразует запросы пользователя в команды запросов к серверной части, а при получении результатов выполняет преобразование и отображение информации. Клиентской программой может быть любая программа, имеющая интерфейс с серверной программой или СУБД.

Разработка нашего проекта проходит в среде разработки Microsoft Visual Studio 2010 на языке программирования C#.

Сначала мы создаем контролы которые в дальнейшем облегчат нашу задачу в разработку проекта.

Контрол ButtonAccess: предназначен для создания кнопок с разграничением прав доступа.

public class ButtonAccess : Button

{

public enum Type {None, Add, Edit, Del }; [Category("DataBase")]

public Type AccessName

{

get; set;

}

}

Контрол CheckBoxDB: предназначен для булевских полей true и false.

public class CheckBoxDB : CheckBox,InterfaceDB

{

[Category("DataBase")] public string DisplayValues

{

get;set;

}

public void GetValue(System.Data.DataRow row)

{

if (!String.IsNullOrEmpty(row[DisplayValues].ToString() ))

{

this.Checked = (bool)row[DisplayValues];

}

}

public void SetValue(System.Data.DataRow row)

{

row[DisplayValues] = this.Checked;

}

public bool CorrectFilling()

{

return true

}

}

Контрол ComboBoxDB: предназначен для выбора значений из списка(справочников)

public class ComboBoxDB : System.Windows.Forms.ComboBox, InterfaceDB

{

DataTable _container = new DataTable(); [Category("DataBase")]

public string TableName { get; set; }

public List<SqlParameter> Filter = new List<SqlParameter>(); public void SelectData()

{

_container.Clear();

SqlCommand _cmd = new SqlCommand(); if (!string.IsNullOrEmpty(TableName))

{

_cmd.CommandText = "SPU_" + TableName + "_SEL"; _cmd.CommandType = System.Data.CommandType.StoredProcedure; _cmd.Connection = SQLConnect.GetConnect();

foreach (SqlParameter param in Filter)

{

_cmd.Parameters.Add(param);

}

_container = SQLCommandor.SelectData(_cmd);

}

RefreshData();

}

private void RefreshData()

{

if (!string.IsNullOrEmpty(DisplayValues))

{

try

{

foreach (DataRow row in _container.Rows)

{

this.Items.Add(row[DisplayValues].ToString());

}

}

catch (Exception Error)

{

MessageBox.Show(Error.Message);

}

}

else

{

MessageBox.Show("Введите название столбца");

}

}

public string SelectedId()

{

if (this.SelectedIndex >= 0)

{

int a = 0;

foreach (DataRow row in _container.Rows)

{

if (a == this.SelectedIndex)

{

return row[TableName + "_Id"].ToString();

}

a++;

}

return string.Empty;

}

else

{

MessageBox.Show("Выберите поле!!"); return string.Empty;

}

}

[Category("DataBase")] public string DisplayValues

{

get; set;

}

///<summary>

///Заполнение данных из строки редактирования

///</summary>

///<param name="row"> строка редактирования </param> public void GetValue(DataRow row)

{

//var aa =row[TableName + "_Id"]; SelectData();

if (String.IsNullOrEmpty(row[TableName + "_Id"].ToString()))

{ } else

{

int i = 0;

foreach (DataRow _row in _container.Rows)

{

if (row[TableName + "_Id"].ToString() == _row[TableName + "_Id"].ToString())

{

break;

}

i++;

}

this.SelectedIndex = i;

}

}

public void SetValue(DataRow row)

{

row[TableName + "_Id"] = SelectedId();

}

public bool CorrectFilling()

{

if (this.SelectedIndex >= 0)

{

return true;

}

else

{

return false;

}

}

}

Контрол DateTimePickerDB: предназначен для выставления числа и даты.

public class DateTimePickerDB : DateTimePicker,InterfaceDB

{

public string DisplayValues

{

get; set;

}

public void GetValue(System.Data.DataRow row)

{

string tmp = row[DisplayValues].ToString(); if (!String.IsNullOrEmpty(tmp))

{

this.Value = (DateTime)row[DisplayValues];

}

else

{

this.Value = DateTime.Now;

}

}

public void SetValue(System.Data.DataRow row)

{

row[DisplayValues] = this.Value;

}

public bool CorrectFilling()

{

if (this.Value != null)

{

return true;

}

else

{

return false;

}

}

}

Контрол ListBoxDB: предназначен для отображения записей из таблиц

public class ListBoxDB : ListBox

{

DataTable _container = new DataTable(); [Category("DataBase")]

public string TableName { get; set; } [Category("DataBase")]

public string DisplayValues

{

get; set;

}

public List<SqlParameter> Filter = new List<SqlParameter>(); public void SelectData()

{

SqlCommand _cmd = new SqlCommand(); if (!string.IsNullOrEmpty(TableName))

{

_cmd.CommandText = "SPU_" + TableName + "_SEL"; _cmd.CommandType = System.Data.CommandType.StoredProcedure; _cmd.Connection = SQLConnect.GetConnect();

foreach (SqlParameter param in Filter)

{

_cmd.Parameters.Add(param);

}

_container = SQLCommandor.SelectData(_cmd);

}

RefreshData();

}

private void RefreshData()

{

if (!string.IsNullOrEmpty(DisplayValues))

{

this.Items.Clear(); try

{

foreach (DataRow row in _container.Rows)

{

this.Items.Add(row[DisplayValues].ToString());

}

}

catch (Exception Error)

{

MessageBox.Show(Error.Message);

}

}

else

{

MessageBox.Show("Введите название столбца");

}

}

public string SelectedId()

{

if (this.SelectedIndex >= 0)

{

int a = 0;

foreach (DataRow row in _container.Rows)

{

if (a == this.SelectedIndex)

{

return row[TableName + "_Id"].ToString();

}

a++;

}

return string.Empty;

}

else

{

MessageBox.Show("Выберите поле!!"); return string.Empty;

}

}

public DataRow EditingRow()

{

if (this.SelectedIndex >= 0)

{

int a = 0;

foreach (DataRow row in _container.Rows)

{

if (a == this.SelectedIndex)

{

return row;

}

a++;

}

return null;

}

else

{

//MessageBox.Show("Выберите поле!!"); return null;

}

}

public DataRow NewRow()

{

return _container.NewRow();

}

}

Контрол TextBoxDB: предназначен для ввода значения в столбец

public class TextBoxDB : System.Windows.Forms.TextBox, InterfaceDB { #region Реализация интерфейса InerfaceDB

[Category("DataBase")]

[Description("Имя столбца, значение которого надо выводить")] public string DisplayValues

{

get; set;

}

///<summary>

///Получает значение из столбца и записывает в поле, указанное в DisplayValues

///</summary>

///<param name="row">строка редактирования</param>

public void GetValue(DataRow row)

{

if (row[DisplayValues] != null)

{