powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вопрос по внесению изменений в базу SQL Server.
20 сообщений из 45, страница 2 из 2
Вопрос по внесению изменений в базу SQL Server.
    #32688708
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю, что если у меня около 15 таблиц в DataSet, и я хочу иметь всего три процедуры, по одной на каждую операцию(INSERT,UPDATE,DELETE) обновления данных в базе на SQL сервере я должен буду, вопервых для того же daTest.InsertCommand описать кучу параметров, а в самой хранимой процедуре указать все эти параметры

В этом может помочь мастер VS.NET - описать и сгенерировать необходимые процедуры, которые за тем можно подправить.
Существуют еще различные генераторы формирования ХП, и DataAdapter.
Вручную заниматься вводом параметров правильно настроенного DataAdapter тоже нет необходимости, данные должны подставляться автоматически на основе обновляемой строки. И здесь также есть различные сторонние генераторы формирующие DataAdapter на основе схемы таблицы.

и перед каждым оператором INSERT делать проверку, есть такие параметры, т.е. есть ли строки на вставление или нет. Так?

Считаю полезным явно определять при помощи DataSet.GetChanges , или DataTable.Select . Те изменения которые произошли в DataSet. Пример использования DataSet.GetChanges опять же можно получить при помощи мастера VS.NET, DataTable.Select используют, например при Insert когда необходимо обновить текущий DataSet получаемыми значениями Identity.

Как альтернатива иметь несколько процедур для каждой операции, но тогда придется менять параметр
Код: plaintext
1.
2.
cmdSqlServerInsert.CommandText = "dbo.spInsertTelo"
каждый раз когда нужно выполнять другую хранимую процедуру.

Обычно используется несколько "заточенных" экземпляров класса DataAdapter для каждой таблицы. Таким образом ничего менять не приходится. Либо создавать и настраивать свой DataAdapter в нужном месте, но если пойти таким путем то ИМХО вообще DataAdapter не нужен, создаем и настраиваем Command вручную, передаем параметры на основе строки и запускаем ХП на выполнение.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32689360
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за развернутый ответ:)
А пятнадцать DataAdapter для 15 таблиц это не слишком?
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32689393
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не слишком :-)

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32689712
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит так, пока я сделал следующее. Есть тестовая база, две таблицы TeloTbl(Teloid(Primary key),fio,city) и CityTbl(CityId(Primary key)),связаны отношением один ко многим, т.е. CityTbl фактически справочник городов для TeloTbl.
Код следующий:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
Public Shared dsTest As New DataSet
    Public Shared daTest As New SqlClient.SqlDataAdapter

    Public Shared cmdSqlServerSelect As New SqlClient.SqlCommand
    Public Shared cmdSqlServerDelete As New SqlClient.SqlCommand
    Public Shared cmdSqlServerUpdate As New SqlClient.SqlCommand
    Public Shared cmdSqlServerInsert As New SqlClient.SqlCommand

    Public Shared cnSqlServer As New SqlClient.SqlConnection(BuildCnnStr())

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

         'Настройка команды SELECT 
        cmdSqlServerSelect.Connection = cnSqlServer
        cmdSqlServerSelect.CommandType = CommandType.StoredProcedure
        cmdSqlServerSelect.CommandText = "dbo.spSelect"
         '------------------------------------------------------------------ 

         'Настройка команды UPDATE 
        cmdSqlServerUpdate.Connection = cnSqlServer
        cmdSqlServerUpdate.CommandType = CommandType.StoredProcedure
        cmdSqlServerUpdate.CommandText = "dbo.spUpdateTelo"

        cmdSqlServerUpdate.Parameters.Add("@TeloId", SqlDbType.Int,  4 , "teloid")
        cmdSqlServerUpdate.Parameters("@TeloId").Direction = ParameterDirection.Input
        cmdSqlServerUpdate.Parameters("@TeloId").SourceVersion = DataRowVersion.Current

        cmdSqlServerUpdate.Parameters.Add("@City", SqlDbType.Char,  40 , "city")
        cmdSqlServerUpdate.Parameters("@City").Direction = ParameterDirection.Input
        cmdSqlServerUpdate.Parameters("@City").SourceVersion = DataRowVersion.Current

        cmdSqlServerUpdate.Parameters.Add("@FIO", SqlDbType.Char,  50 , "fio")
        cmdSqlServerUpdate.Parameters("@FIO").Direction = ParameterDirection.Input
        cmdSqlServerUpdate.Parameters("@FIO").SourceVersion = DataRowVersion.Current

        cmdSqlServerUpdate.Parameters.Add("@CityId", SqlDbType.Char,  40 , "CityId")
        cmdSqlServerUpdate.Parameters("@CityId").Direction = ParameterDirection.Input
        cmdSqlServerUpdate.Parameters("@CityId").SourceVersion = DataRowVersion.Current

        cmdSqlServerUpdate.Parameters.Add("@CityIdold", SqlDbType.Char,  40 , "CityId")
        cmdSqlServerUpdate.Parameters("@CityIdold").Direction = ParameterDirection.Input
        cmdSqlServerUpdate.Parameters("@CityIdold").SourceVersion = DataRowVersion.Original

         '-------------------------------------------------------------- 

         'Настройка команды DELETE 
        cmdSqlServerDelete.Connection = cnSqlServer
        cmdSqlServerDelete.CommandType = CommandType.StoredProcedure
        cmdSqlServerDelete.CommandText = "dbo.spDeleteTelo"

        cmdSqlServerDelete.Parameters.Add("@TeloId", SqlDbType.Int,  4 , "teloid")
        cmdSqlServerDelete.Parameters("@TeloId").Direction = ParameterDirection.Input
        cmdSqlServerDelete.Parameters("@TeloId").SourceVersion = DataRowVersion.Original

        cmdSqlServerDelete.Parameters.Add("@CityId", SqlDbType.Char,  40 , "cityid")
        cmdSqlServerDelete.Parameters("@CityId").Direction = ParameterDirection.Input
        cmdSqlServerDelete.Parameters("@CityId").SourceVersion = DataRowVersion.Original
         '---------------------------------------------------------- 

         'Настройка команды INSERT 
        cmdSqlServerInsert.Connection = cnSqlServer
        cmdSqlServerInsert.CommandType = CommandType.StoredProcedure
        cmdSqlServerInsert.CommandText = "dbo.spInsertTelo"

        cmdSqlServerInsert.Parameters.Add("@City", SqlDbType.Char,  40 , "city")
        cmdSqlServerInsert.Parameters("@City").Direction = ParameterDirection.Input
         'cmdSqlServerInsert.Parameters("@City").SourceVersion = DataRowVersion.Current 

        cmdSqlServerInsert.Parameters.Add("@FIO", SqlDbType.Char,  50 , "fio")
        cmdSqlServerInsert.Parameters("@FIO").Direction = ParameterDirection.Input
         'cmdSqlServerInsert.Parameters("@FIO").SourceVersion = DataRowVersion.Current 

        cmdSqlServerInsert.Parameters.Add("@CityId", SqlDbType.Char,  40 , "cityid")
        cmdSqlServerInsert.Parameters("@CityId").Direction = ParameterDirection.Input
         'cmdSqlServerInsert.Parameters("@CityId").SourceVersion = DataRowVersion.Current 

         '--------------------------------------------------------------------- 

        daTest.TableMappings.Add("Table", "TeloTbl")
        daTest.TableMappings.Add("Table1", "CityTbl")

        daTest.SelectCommand = cmdSqlServerSelect
        daTest.UpdateCommand = cmdSqlServerUpdate
        daTest.InsertCommand = cmdSqlServerInsert
        daTest.DeleteCommand = cmdSqlServerDelete

         daTest.Fill(dsTest)

        dgTelo.DataSource = dsTest.Tables("TeloTbl")
        dgCity.DataSource = dsTest.Tables("CityTbl")
      
    End Sub

     'Функция создания строки подключения к серверу 
    Public Shared Function BuildCnnStr() As String

        Dim strTemp As String

        strTemp = "data source=409ADMIN;integrated security=SSPI;initial catalog=delupins;persist security info=False"
         'strTemp = "data source=STALKER;integrated security=FALSE;initial catalog=delupins;persist security info=False;uid=sa;pwd=" 

        Return strTemp

    End Function

    Private Sub DelDataGrid(ByVal dg As DataGrid)
        If Not Me.BindingContext(dg.DataSource).Count =  0  Then
            Me.BindingContext(dg.DataSource).RemoveAt(Me.BindingContext(dg.DataSource).Position)
        End If
    End Sub

    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
        DelDataGrid(dgTelo)
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        DelDataGrid(dgCity)
    End Sub

    Private Sub bttnDelonServer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bttnDelonServer.Click
       
        daTest.Update(dsTest.Tables("TeloTbl").Select("", "", DataViewRowState.Deleted))
        daTest.Update(dsTest.Tables("TeloTbl").Select("", "", DataViewRowState.Added))
        daTest.Update(dsTest.Tables("TeloTbl").Select("", "", DataViewRowState.ModifiedCurrent))

        daTest.Update(dsTest.Tables("CityTbl").Select("", "", DataViewRowState.Deleted))
        daTest.Update(dsTest.Tables("CityTbl").Select("", "", DataViewRowState.Added))
        daTest.Update(dsTest.Tables("CityTbl").Select("", "", DataViewRowState.ModifiedCurrent))

       End Sub
Хранимые процедуры всего 4 штуки, для SELECT,INSERT,UPDATE и DELETE выглядят так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
PROCEDURE dbo.spDeleteTelo (@teloid int= 9999 ,@cityid char( 40 )='xxxx')
AS
delete dbo.telotbl where telotbl.teloid=@teloid
delete dbo.citytbl where citytbl.cityid=@cityid
	RETURN 

PROCEDURE dbo.spInsertTelo (@FIO char( 50 )='XXX',@City char( 40 )='XXX',@CityId char( 40 )='XXX')

AS
if @cityid<>'XXX' 
INSERT INTO dbo.CityTbl(CityId) VALUES (@CityId)
if @FIO<>'XXX'
INSERT INTO dbo.TeloTbl(FIO, City)
VALUES(@FIO,@City)
	RETURN 

PROCEDURE dbo.spUpdateTelo
(@TeloId int=NULL,@FIO char( 50 )=NULL,@City char( 40 )=NULL,@CityId char( 40 )=NULL,@CityIdold char( 40 )=NULL)

AS
UPDATE dbo.CityTbl SET CityId=isnull(@CityId,Cityid) WHERE CityId=@CityIdold
UPDATE dbo.TeloTbl SET FIO=isnull(@FIO,fio),City=isnull(@City,city) WHERE TELOID=@TELOID

	RETURN 

PROCEDURE dbo.spSelect

AS
	SET NOCOUNT ON
	select TeloTbl.Teloid,telotbl.fio,telotbl.city from dbo.telotbl
	select citytbl.cityid from dbo.cityTbl
	RETURN 

Вроде все работает, такую же схему хочу применить и к большой базе.
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32689736
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде все работает, такую же схему хочу применить и к большой базе.

Попробуйте, принципиально плохого ничего не увидел.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32689752
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо:), единственное, что меня смущает, так это количество параметров для каждой процедуры.
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32689756
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
единственное, что меня смущает, так это количество параметров для каждой процедуры.

Это разве много? :-)

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32689844
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет, это то не много, но в реальном DataSet около 15 таблиц по 5 -6 столбцов примерно. Итого очень приблизительно порядка 50 параметров для каждой процедуры.
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32690220
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет, это то не много, но в реальном DataSet около 15 таблиц по 5 -6 столбцов примерно. Итого очень приблизительно порядка 50 параметров для каждой процедуры.

Не понял как получается порядка 50 параметров? Если в таблицах по 5-6 столбцов примерно.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32692446
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Принципиально плохо (ИМХО) - dbo.spDeleteTelo, dbo.spInsertTelo - а флаг в процедуре завести слабо - типа 1 - удаление, 2, добавление и т.п. Таблица одна. Более того, количество параметров тогда одинаково в процедуре и задаётся в отдельной функции для всех команд абсолютно одинаково. Разница только в значениях параметров. Кода таким образом становится меньше.

2 sa
Считаю полезным явно определять при помощи DataSet.GetChanges, или DataTable.Select. Те изменения которые произошли в DataSet

Полезно, но не всегда необходимо. Зачастую не использую совсем. Идентити новой записи получаю через выходной параметр ХП.
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32692594
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока для UPDATE получается такая процедура, 60 параметров:(
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
PROCEDURE dbo.spCompanyUpdate
(
@CompanyID int=null,@Name char( 30 )=null,@Descript text=null,@WebSite char( 50 )=null,@History text = null,@DataZan datetime=null,
@CompanyAdrId int=null,@PostIndex int= null,@Street char( 50 )= null,@HomeNum char( 10 )= null,@RoomNum int= null,@CityId int= null,
@CompanyRecvId int= null,@RatedAccount char( 20 )= null,@CorrAccount char( 20 )= null,@BankName char( 100 )= null,@BIK char( 20 )= null,@INN char( 10 )= null,@KPP char( 10 )= null,@OKOHX char( 10 )= null,@OKPO char( 10 )= null,
@Discount numeric( 10 , 0 )= null,@TovarGroupId char( 25 )= null,@ProducerId char( 15 )= null,
@CompanySotrudnID int= null,@Family char( 25 )= null,@NameSotr char( 30 )= null ,@PatrName char( 25 )= null,@Title char( 100 )= null,@Beathday datetime= null,
@CompanyContragentId int= null,@NameContr char( 30 )= null,@RatedAccountContr int= null,@CorrAccountContr int= null,@BIKContr int= null,@BankNameContr char( 100 )= null,@INNContr int= null,@KPPContr int= null,@OKOHXContr int= null,@OKPOContr int= null,@WebSiteContr char( 30 )= null,@DescriptContr varchar( 150 )= null,@DataZanContr datetime= null,
@CompanyActivityId int= null,@ActivityData datetime= null,@TitleAct char( 100 )= null,@DescriptAct text= null,
@CompanyLicId int= null,@DescriptLic text= null,
@ContragentSotrudnId int= null,@FamilyContrSotr char( 25 )= null,@NameContrSotr char( 30 )= null,@PartNameContrSotr char( 25 )= null,@titleContrSotr char( 100 )= null,
@ContragentAdrId int= null,@PostIndexAdrContr int= null,@StreetAdrContr char( 50 )= null,@HomeNumAdrContr char( 10 )= null,@RoomNumAdrContr int= null,@CityIdAdrContr int= null)

AS

UPDATE dbo.CompanyTbl SET dbo.Companytbl.Name=isnull(@Name,name),Descript=isnull(@Descript,descript),WebSite=isnull(@WebSite,WebSite),History=isnull(@History,history),DataZan=isnull(@DataZan,datazan) WHERE CompanyId=@companyid
UPDATE dbo.CompanyAdrTbl SET PostIndex=isnull(@PostIndex,PostIndex),Street=isnull(@Street,Street),HomeNum=isnull(@HomeNum,HomeNum),RoomNum=isnull(@RoomNum,RoomNum),CityId=isnull(@CityId,CityId) WHERE CompanyId=@companyid and CompanyAdrId=@CompanyAdrId
UPDATE dbo.CompanyRecvTbl SET  RatedAccount=isnull(@RatedAccount,RatedAccount), CorrAccount=isnull(@CorrAccount,CorrAccount),BankName=isnull(@BankName,BankName),BIK=isnull(@BIK,BIK),INN=isnull(@INN,INN),KPP=isnull(@KPP,KPP),OKOHX=isnull(@OKOHX,OKOHX),OKPO=isnull(@OKPO,OKPO) WHERE CompanyRecvId=@CompanyRecvId
UPDATE dbo.CompanyDiscountTbl SET Discount=isnull(@Discount,Discount) WHERE CompanyID=@CompanyID AND TovarGroupId=@TovarGroupId AND ProducerId=@ProducerId
UPDATE dbo.CompanySotrudnTbl SET dbo.CompanySotrudnTbl.Family=isnull(@Family,dbo.CompanySotrudnTbl.Family),dbo.CompanySotrudnTbl.Name=isnull(@NameSotr,dbo.CompanySotrudnTbl.Name),dbo.CompanySotrudnTbl.PatrName=isnull(@PatrName,dbo.CompanySotrudnTbl.PatrName),dbo.CompanySotrudnTbl.Title=isnull(@Title,dbo.CompanySotrudnTbl.Title),dbo.CompanySotrudnTbl.Beathday=isnull(@Beathday,dbo.CompanySotrudnTbl.Beathday) WHERE CompanySotrudnID=@CompanySotrudnID
UPDATE dbo.CompanyContragentTbl SET dbo.CompanyContragentTbl.Name=isnull(@NameContr,dbo.CompanyContragentTbl.Name),dbo.CompanyContragentTbl.RatedAccount=isnull(@RatedAccountContr,dbo.CompanyContragentTbl.RatedAccount),dbo.CompanyContragentTbl.CorrAccount=isnull(@CorrAccountContr,dbo.CompanyContragentTbl.CorrAccount),dbo.CompanyContragentTbl.BIK=isnull(@BIKContr,dbo.CompanyContragentTbl.BIK),dbo.CompanyContragentTbl.BankName=isnull(@BankNameContr,dbo.CompanyContragentTbl.BankName),dbo.CompanyContragentTbl.INN=isnull(@INNContr,dbo.CompanyContragentTbl.INN),dbo.CompanyContragentTbl.KPP=isnull(@KPPContr,dbo.CompanyContragentTbl.KPP),dbo.CompanyContragentTbl.OKOHX=isnull(@OKOHXContr,dbo.CompanyContragentTbl.OKOHX),dbo.CompanyContragentTbl.OKPO=isnull(@OKPOContr,dbo.CompanyContragentTbl.OKPO),dbo.CompanyContragentTbl.WebSite=isnull(@WebSiteContr,dbo.CompanyContragentTbl.WebSite),dbo.CompanyContragentTbl.Descript=isnull(@DescriptContr,dbo.CompanyContragentTbl.Descript),dbo.CompanyContragentTbl.DataZan=isnull(@DataZanContr,dbo.CompanyContragentTbl.DataZan) WHERE CompanyContragentId=@CompanyContragentId
UPDATE dbo.CompanyActivityTbl SET ActivityData=isnull(@ActivityData,ActivityData),Title=isnull(@TitleAct,Title),Descript=isnull(@DescriptAct,Descript) WHERE CompanyActivityId=@CompanyActivityId
UPDATE dbo.CompanyLicTbl SET Descript=isnull(@DescriptLic,Descript)WHERE CompanyLicId=@CompanyLicId
UPDATE dbo.ContragentSotrudnTbl SET dbo.ContragentSotrudnTbl.Family=isnull(@FamilyContrSotr,Family),dbo.ContragentSotrudnTbl.Name=isnull(@NameContrSotr,Name),dbo.ContragentSotrudnTbl.PartName=isnull(@PartNameContrSotr,PartName),dbo.ContragentSotrudnTbl.title=isnull(@titleContrSotr,title) WHERE ContragentSotrudnId=@ContragentSotrudnId 
UPDATE dbo.ContragentAdrTbl SET dbo.ContragentAdrTbl.PostIndex=isnull(@PostIndexAdrContr,PostIndex),dbo.ContragentAdrTbl.Street=isnull(@StreetAdrContr,Street),dbo.ContragentAdrTbl.HomeNum=isnull(@HomeNumAdrContr,HomeNum), dbo.ContragentAdrTbl.RoomNum=isnull(@RoomNumAdrContr,RoomNum),dbo.ContragentAdrTbl.CityId=isnull(@CityIdAdrContr,CityId) WHERE ContragentAdrId=@ContragentAdrId
	
	/* SET NOCOUNT ON */
	RETURN 
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32692791
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока для UPDATE получается такая процедура, 60 параметров:(

Вообще то такую штуку я и не предполагал :-)
Почему не хотите сделать отдельные процедуры для каждой таблицы|DataAdapter'а?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32692823
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. для каждой таблицы будет три процедуры UPDATE,DELETE и INSERT, и соответственно свой DataAdapter, к которым всеравно придется описывать все эти же параметры, помоему получится даже более громоздко, или нет?

Или можно описать все параметры, а потом перед обновлением изменять параметр CommandText, т.е. что нибудь типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
cmdSqlServerUpdate.Connection = cnSqlServer
cmdSqlServerUpdate.CommandType = CommandType.StoredProcedure

 'Описываем все параметры 
cmdSqlServerUpdate.Parameters.Add("@CompanyId", SqlDbType.Int,  4 , "CompanyId")
        cmdSqlServerUpdate.Parameters("@CompanyId").Direction = ParameterDirection.Input
        cmdSqlServerUpdate.Parameters("@CompanyId").SourceVersion = DataRowVersion.Current
.
.
.
cmdSqlServerUpdate.CommandText = "dbo.spUpdateCompany"
daTest.Update(dsTest.Tables("CompanyTbl").Select("", "", DataViewRowState.ModifiedCurrent))
.
.
.
cmdSqlServerUpdate.CommandText = "dbo.spUpdateContragent"
daTest.Update(dsTest.Tables("ContragentTbl").Select("", "", DataViewRowState.ModifiedCurrent))
.
.
.
Так по моему будет более компактно...
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32692830
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. для каждой таблицы будет три процедуры UPDATE,DELETE и INSERT, и соответственно свой DataAdapter, к которым всеравно придется описывать все эти же параметры, помоему получится даже более громоздко, или нет?

Думаю это правильно с логической и функциональной точки зрения. Хотя трудно что то советовать не зная предметную область и постановку задачи.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32695987
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После продолжительного обсуждения, у меня сложилось собственное мнение, но вопросов не поубавилось. Отдельное спасибо Hummer за идею создавать параметры в отдельной процедуре, и Sa за развернутые ответы:)
Итак, что имеем. Тестовая база состаящая из двух таблиц,TeloTbl(Teloid(Primary key),fio,city) и CityTbl(CityId(Primary key)),связаны отношением один ко многим, т.е. CityTbl фактически справочник городов для TeloTbl и следующий работающий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
Public Shared dsTest As New DataSet
    Public Shared daTest As New SqlClient.SqlDataAdapter

    Public Shared cmdSqlServerSelect As New SqlClient.SqlCommand
    Public Shared cmdSqlServerDelete As New SqlClient.SqlCommand
    Public Shared cmdSqlServerUpdate As New SqlClient.SqlCommand
    Public Shared cmdSqlServerInsert As New SqlClient.SqlCommand

    Public Shared cnSqlServer As New SqlClient.SqlConnection(BuildCnnStr())

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
         '-------------------------------------------- 
         'Настройка команды SELECT 
         '-------------------------------------------- 
        cmdSqlServerSelect.Connection = cnSqlServer
        cmdSqlServerSelect.CommandType = CommandType.StoredProcedure
        cmdSqlServerSelect.CommandText = "dbo.spSelect"
         '-------------------------------------------- 
         'Настройка команды UPDATE 
         '-------------------------------------------- 
        buildParams(cmdSqlServerUpdate, "dbo.spUpdateTelo")
        cmdSqlServerUpdate.Parameters("@CityIdold").SourceVersion = DataRowVersion.Original
         '-------------------------------------------- 
         'Настройка команды DELETE 
         '-------------------------------------------- 
        buildParams(cmdSqlServerDelete, "dbo.spDeleteTelo")
        cmdSqlServerDelete.Parameters("@TeloId").SourceVersion = DataRowVersion.Original
        cmdSqlServerDelete.Parameters("@CityId").SourceVersion = DataRowVersion.Original
         '-------------------------------------------- 
         'Настройка команды INSERT 
         '-------------------------------------------- 
        buildParams(cmdSqlServerInsert, "dbo.spInsertTelo")
         '--------------------------------------------------------------------- 

        daTest.TableMappings.Add("Table", "TeloTbl")
        daTest.TableMappings.Add("Table1", "CityTbl")

        daTest.SelectCommand = cmdSqlServerSelect
        daTest.UpdateCommand = cmdSqlServerUpdate
        daTest.InsertCommand = cmdSqlServerInsert
        daTest.DeleteCommand = cmdSqlServerDelete

        daTest.Fill(dsTest)

        dgTelo.DataSource = dsTest.Tables("TeloTbl")
        dgCity.DataSource = dsTest.Tables("CityTbl")

    End Sub

     'Функция создания строки подключения к серверу 
    Public Shared Function BuildCnnStr() As String

        Dim strTemp As String

        strTemp = "data source=409ADMIN;integrated security=SSPI;initial catalog=delupins;persist security info=False"
         'strTemp = "data source=STALKER;integrated security=FALSE;initial catalog=delupins;persist security info=False;uid=sa;pwd=" 

        Return strTemp

    End Function

     'При нажатии на эту кнопку обновления отправляются на сервер. 
    Private Sub bttnDelonServer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bttnDelonServer.Click

              daTest.Update(dsTest.Tables("TeloTbl").Select("", "", DataViewRowState.Deleted))
        daTest.Update(dsTest.Tables("TeloTbl").Select("", "", DataViewRowState.Added))
        daTest.Update(dsTest.Tables("TeloTbl").Select("", "", DataViewRowState.ModifiedCurrent))

        daTest.Update(dsTest.Tables("CityTbl").Select("", "", DataViewRowState.Deleted))
        daTest.Update(dsTest.Tables("CityTbl").Select("", "", DataViewRowState.Added))
        daTest.Update(dsTest.Tables("CityTbl").Select("", "", DataViewRowState.ModifiedCurrent))

            End Sub

     'Подпрограмма для построения cmdSqlServerUpdate,cmdSqlServerInsert,cmdSqlServerDelete. 
     'cmdSqlServer - команда, spName имя хранимой процедуры. 
    Public Sub buildParams(ByVal cmdSqlServer As SqlClient.SqlCommand, ByVal spName As String)

        cmdSqlServer.Connection = cnSqlServer
        cmdSqlServer.CommandType = CommandType.StoredProcedure
        cmdSqlServer.CommandText = spName

        cmdSqlServer.Parameters.Add("@TeloId", SqlDbType.Int,  4 , "teloid")
        cmdSqlServer.Parameters.Add("@City", SqlDbType.Char,  40 , "city")
        cmdSqlServer.Parameters.Add("@FIO", SqlDbType.Char,  50 , "fio")
        cmdSqlServer.Parameters.Add("@CityId", SqlDbType.Char,  40 , "CityId")
        cmdSqlServer.Parameters.Add("@CityIdold", SqlDbType.Char,  40 , "CityId")

    End Sub
Хранимые процедуры всего , для INSERT,UPDATE и DELETE выглядят так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
PROCEDURE dbo.spDeleteTelo(@teloid int= 9999 ,@cityid char( 40 )= 'xxxx',@FIO char(50)=null,@City char(40)=null,@CityIdOld char(40)=null) 
AS

BEGIN TRANSACTION deleteitem

delete dbo.telotbl where telotbl.teloid=@teloid
delete dbo.citytbl where citytbl.cityid=@cityid

IF @@ERROR<> 0 
BEGIN
  ROLLBACK TRANSACTION deleteitem
  RETURN - 1 
END
ELSE
BEGIN
  COMMIT TRANSACTION deleteitem
  RETURN  0 
END

PROCEDURE dbo.spInsertTelo
(@FIO char( 50 )= 'XXX',@City char(40)='XXX',@CityId char(40)='XXX',@teloid int=null,@CityIdOld char(40)=null) 
AS

BEGIN TRANSACTION insertitem

if @cityid<> 'XXX'  
INSERT INTO dbo.CityTbl(CityId) VALUES (@CityId)
if @FIO<> 'XXX' 
INSERT INTO dbo.TeloTbl(FIO, City)
VALUES(@FIO,@City)

IF @@ERROR<> 0 
BEGIN
  ROLLBACK TRANSACTION insertitem
  RETURN - 1 
END
ELSE
BEGIN
  COMMIT TRANSACTION insertitem
  RETURN  0 
END

PROCEDURE dbo.spUpdateTelo
(@TeloId int=NULL,@FIO char( 50 )=NULL,@City char( 40 )=NULL,@CityId char( 40 )=NULL,@CityIdold char( 40 )=NULL)
AS

BEGIN TRANSACTION updateitem

UPDATE dbo.CityTbl SET CityId=isnull(@CityId,Cityid) WHERE CityId=@CityIdold
UPDATE dbo.TeloTbl SET FIO=isnull(@FIO,fio),City=isnull(@City,city) WHERE TELOID=@TELOID

IF @@ERROR<> 0 
BEGIN
  ROLLBACK TRANSACTION updateitem
  RETURN - 1 
END
ELSE
BEGIN
  COMMIT TRANSACTION updateitem
  RETURN  0 
END
Все работает, но в реальной базе нужно обнавлять около 15 таблиц, количество параметорв порядка 80 штук, в связи с чем повторю мучающие меня вопросы:
1. При использовании варианта, который сделан в тестовой базе, придется сделать три хранимых процедуры с одинаковым числом параметров, коих около 80.На чем это может отражаться кроме гомоздкости кода хранимых процедур?
2.Вариант второй. На каждую таблицу по три "своих" ХП.Тогда придется описывать теже 80 параметров плюс переодически менять параметр CommandText для Command.
3.Вариант третий. Использовать для каждой таблицы сврй DataAdapter, тоже помоему слишком громоздко.

Следует учесть, что в реальной базе все эти обновления должны происходить вместе, т.е. пользователь открыл данные по определенной фирме, далее он чтото меняет в них, затем нажимает кнопку ОК и происходит запись _всех_ внесенных изменений в базу.

Может быть кто-то сталкивался с проектами в которых нужно было одномоментно вносить изменения в большое количество таблиц?
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32696120
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одномоментно в 15 таблиц вносить изменения - что имеем: либо неправильная структура БД, либо слишком перегруженная информацией карточка на изменение БД - т.е. прям представил форму, на которой инфа из 15 таблиц и вся меняется:)
Можно дальше пойти, всю БД на такую форму запихнуть.

Модифицируйте вариант 2 - на каждую табличку 1 процедура с флагом, по которому в процедуре определям, удалять, изменять или добавлять.
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32697675
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак продолжим :), по совету уважаемого Hummer, модифицировал вариант два из своего предыдущего поста.
Плюсы в данном варианте вижу следующие:
1. Объект Command один на каждую хранимую процедуру(таблицу).
2. Соответственно параметры создаются только один раз для данной команды.
Минусы:
1. Помоему слишком громоздко выглядит кусок кода отвечающий непосредственно за отправку обновлений на SQL Server.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
Public Shared dsTest As New DataSet
    Public Shared daTest As New SqlClient.SqlDataAdapter

    Public Shared cmdSqlServerSelect As New SqlClient.SqlCommand

    Public Shared cmdSqlServerTelo As New SqlClient.SqlCommand
    Public Shared cmdSqlServerCity As New SqlClient.SqlCommand

    Public Shared cnSqlServer As New SqlClient.SqlConnection(BuildCnnStr())

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
         '-------------------------------------------- 
         'Настройка команды SELECT 
         '-------------------------------------------- 
        cmdSqlServerSelect.Connection = cnSqlServer
        cmdSqlServerSelect.CommandType = CommandType.StoredProcedure
        cmdSqlServerSelect.CommandText = "dbo.spSelect"

        daTest.SelectCommand = cmdSqlServerSelect
         '-------------------------------------------- 
         'Настройка команды для TeloTbl 
         '-------------------------------------------- 
        cmdSqlServerTelo.Connection = cnSqlServer
        cmdSqlServerTelo.CommandType = CommandType.StoredProcedure
        cmdSqlServerTelo.CommandText = "spTeloUniv"

        cmdSqlServerTelo.Parameters.Add("@TeloId", SqlDbType.Int,  4 , "teloid")
        cmdSqlServerTelo.Parameters.Add("@City", SqlDbType.Char,  40 , "city")
        cmdSqlServerTelo.Parameters.Add("@FIO", SqlDbType.Char,  50 , "fio")
        cmdSqlServerTelo.Parameters.Add("@flag", SqlDbType.Int)
         '-------------------------------------------- 
         'Настройка команды для CityTbl 
         '-------------------------------------------- 
        cmdSqlServerCity.Connection = cnSqlServer
        cmdSqlServerCity.CommandType = CommandType.StoredProcedure
        cmdSqlServerCity.CommandText = "spCityUniv"

        cmdSqlServerCity.Parameters.Add("@CityId", SqlDbType.Char,  40 , "CityId")
        cmdSqlServerCity.Parameters.Add("@CityIdOld", SqlDbType.Char,  40 , "CityId")
        cmdSqlServerCity.Parameters.Add("@flag", SqlDbType.Int)
         '------------------------------------------------ 

        daTest.TableMappings.Add("Table", "TeloTbl")
        daTest.TableMappings.Add("Table1", "CityTbl")

        daTest.Fill(dsTest)

        dgTelo.DataSource = dsTest.Tables("TeloTbl")
        dgCity.DataSource = dsTest.Tables("CityTbl")

    End Sub

     'Функция создания строки подключения к серверу 
    Public Shared Function BuildCnnStr() As String

        Dim strTemp As String

        strTemp = "data source=409ADMIN;integrated security=SSPI;initial catalog=delupins;persist security info=False"
         'strTemp = "data source=STALKER;integrated security=FALSE;initial catalog=delupins;persist security info=False;uid=sa;pwd=" 

        Return strTemp

    End Function
    
    Private Sub bttnDelonServer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bttnDelonServer.Click
         '-----Обнавляем таблицу TeloTbl---------------------------- 
        daTest.UpdateCommand = cmdSqlServerTelo
        daTest.InsertCommand = cmdSqlServerTelo
        daTest.DeleteCommand = cmdSqlServerTelo

        cmdSqlServerTelo.Parameters("@flag").Value =  3 
        cmdSqlServerTelo.Parameters("@TeloId").SourceVersion = DataRowVersion.Original
        daTest.Update(dsTest.Tables("TeloTbl").Select("", "", DataViewRowState.Deleted))

        cmdSqlServerTelo.Parameters("@flag").Value =  2 
        daTest.Update(dsTest.Tables("TeloTbl").Select("", "", DataViewRowState.Added))

        cmdSqlServerTelo.Parameters("@flag").Value =  1 
        daTest.Update(dsTest.Tables("TeloTbl").Select("", "", DataViewRowState.ModifiedCurrent))

         '----Обнавляем таблицу СityTbl------------------------------ 
        daTest.UpdateCommand = cmdSqlServerCity
        daTest.InsertCommand = cmdSqlServerCity
        daTest.DeleteCommand = cmdSqlServerCity

        cmdSqlServerCity.Parameters("@flag").Value =  3 
        cmdSqlServerCity.Parameters("@CityId").SourceVersion = DataRowVersion.Original
        daTest.Update(dsTest.Tables("CityTbl").Select("", "", DataViewRowState.Deleted))

        cmdSqlServerCity.Parameters("@flag").Value =  2 
        daTest.Update(dsTest.Tables("CityTbl").Select("", "", DataViewRowState.Added))

        cmdSqlServerCity.Parameters("@flag").Value =  1 
        cmdSqlServerCity.Parameters("@CityIdOld").SourceVersion = DataRowVersion.Original
        daTest.Update(dsTest.Tables("CityTbl").Select("", "", DataViewRowState.ModifiedCurrent))

    End Sub
Хранимые процедуры для таблиц TeloTbl и CityTbl :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
PROCEDURE dbo.spCityUniv
(@CityId char( 40 )=NULL,@CityIdold char( 40 )=NULL,@flag int=NULL)

AS

if @flag= 1 
UPDATE dbo.CityTbl SET CityId=isnull(@CityId,Cityid) WHERE CityId=@CityIdold
if @flag= 2 
INSERT INTO dbo.CityTbl(CityId) VALUES (@CityId)
if @flag= 3 
delete dbo.citytbl where citytbl.cityid=@cityid

	RETURN 

PROCEDURE dbo.spTeloUniv
(@TeloId int=NULL,@FIO char( 50 )=NULL,@City char( 40 )=NULL,@flag int=NULL)

AS

if @flag= 1 
UPDATE dbo.TeloTbl SET FIO=isnull(@FIO,fio),City=isnull(@City,city) WHERE TELOID=@TELOID
if @flag= 2 
INSERT INTO dbo.TeloTbl(FIO, City) VALUES(@FIO,@City)
if @flag= 3 
delete dbo.telotbl where telotbl.teloid=@teloid

	RETURN 
А на форме инфа действительно из 15 таблиц, а то что меняется все сразу естественно предельный вариант, на самом деле меняться будет одна - три таблицы за раз.
Скорее всего карточка и правда перегружена, но сильно не бейте , ибо это мой первый проект :)
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32698029
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более модифицированнный вариант.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
Public Shared dsTest As New DataSet
    Public Shared daTest As New SqlClient.SqlDataAdapter

    Public Shared cmdSqlServerSelect As New SqlClient.SqlCommand

    Public Shared cmdSqlServerTelo As New SqlClient.SqlCommand
    Public Shared cmdSqlServerCity As New SqlClient.SqlCommand

    Public Shared cnSqlServer As New SqlClient.SqlConnection(BuildCnnStr())

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
         '-------------------------------------------- 
         'Настройка команды SELECT 
         '-------------------------------------------- 
        cmdSqlServerSelect.Connection = cnSqlServer
        cmdSqlServerSelect.CommandType = CommandType.StoredProcedure
        cmdSqlServerSelect.CommandText = "dbo.spSelect"

        daTest.SelectCommand = cmdSqlServerSelect
         '-------------------------------------------- 
         'Настройка команды для TeloTbl 
         '-------------------------------------------- 
        buildCmd(cmdSqlServerTelo, "spTeloUniv")

        cmdSqlServerTelo.Parameters.Add("@TeloId", SqlDbType.Int,  4 , "teloid")
        cmdSqlServerTelo.Parameters.Add("@City", SqlDbType.Char,  40 , "city")
        cmdSqlServerTelo.Parameters.Add("@FIO", SqlDbType.Char,  50 , "fio")
        cmdSqlServerTelo.Parameters.Add("@flag", SqlDbType.Int)
         '-------------------------------------------- 
         'Настройка команды для CityTbl 
         '-------------------------------------------- 
        buildCmd(cmdSqlServerCity, "spCityUniv")

        cmdSqlServerCity.Parameters.Add("@CityId", SqlDbType.Char,  40 , "CityId")
        cmdSqlServerCity.Parameters.Add("@CityIdOld", SqlDbType.Char,  40 , "CityId")
        cmdSqlServerCity.Parameters.Add("@flag", SqlDbType.Int)
         '------------------------------------------------ 

        daTest.TableMappings.Add("Table", "TeloTbl")
        daTest.TableMappings.Add("Table1", "CityTbl")

        daTest.Fill(dsTest)

        dgTelo.DataSource = dsTest.Tables("TeloTbl")
        dgCity.DataSource = dsTest.Tables("CityTbl")

    End Sub

     'Функция создания строки подключения к серверу 
    Public Shared Function BuildCnnStr() As String

        Dim strTemp As String

        strTemp = "data source=409ADMIN;integrated security=SSPI;initial catalog=delupins;persist security info=False"
         'strTemp = "data source=STALKER;integrated security=FALSE;initial catalog=delupins;persist security info=False;uid=sa;pwd=" 

        Return strTemp

    End Function
    
    Private Sub bttnDelonServer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bttnDelonServer.Click
         '-----Обнавляем таблицу TeloTbl---------------------------- 
        getChanges(cmdSqlServerTelo, "TeloTbl")

         '----Обнавляем таблицу СityTbl------------------------------ 
        getChanges(cmdSqlServerCity, "CityTbl")

    End Sub
     'Подпрограмма для настройки объекта Command. 
    Public Sub buildCmd(ByVal cmdSqlServer As SqlClient.SqlCommand, ByVal spName As String)
        cmdSqlServer.Connection = cnSqlServer
        cmdSqlServer.CommandType = CommandType.StoredProcedure
        cmdSqlServer.CommandText = spName
    End Sub

     'Подпрограмма для записи изменений на SQL Server 
    Public Sub getChanges(ByVal cmdSqlServer As SqlClient.SqlCommand, ByVal tblName As String)

        daTest.UpdateCommand = cmdSqlServer
        daTest.InsertCommand = cmdSqlServer
        daTest.DeleteCommand = cmdSqlServer

        cmdSqlServer.Parameters("@flag").Value =  3 
        daTest.Update(dsTest.Tables(tblName).Select("", "", DataViewRowState.Deleted))

        cmdSqlServer.Parameters("@flag").Value =  2 
        daTest.Update(dsTest.Tables(tblName).Select("", "", DataViewRowState.Added))

        cmdSqlServer.Parameters("@flag").Value =  1 
        If tblName = "CityTbl" Then
            cmdSqlServerCity.Parameters("@CityIdOld").SourceVersion = DataRowVersion.Original
        End If
        daTest.Update(dsTest.Tables(tblName).Select("", "", DataViewRowState.ModifiedCurrent))

    End Sub
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32700278
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dencatА на форме инфа действительно из 15 таблиц, а то что меняется все сразу естественно предельный вариант, на самом деле меняться будет одна - три таблицы за раз.
Скорее всего карточка и правда перегружена, но сильно не бейте , ибо это мой первый проект :)

Всё равно не пойму. Неужели нельзя сгруппировать информацию в таблицах по какому-либо признаку и разделить эту дикую форму на несколько, открывающихся друг из друга, например, по кнопке ? Можно на одной форме наложить несколько вкладок и раскидать инфу по ним. Опять же, ведь таблицы имеют между собой какие-то отношения ? Почему, например в ХП не сделать join между соотносящимися таблицами и менять/добавлять/удалять связанные данные на основании данных какой-либо одной ?
...
Рейтинг: 0 / 0
Вопрос по внесению изменений в базу SQL Server.
    #32700402
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не по теме - зато про войну...
вместо этого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 'Функция создания строки подключения к серверу 
    Public Shared Function BuildCnnStr() As String

        Dim strTemp As String

        strTemp = "data source=409ADMIN;integrated security=SSPI;initial catalog=delupins;persist security info=False"
         'strTemp = "data source=STALKER;integrated security=FALSE;initial catalog=delupins;persist security info=False;uid=sa;pwd=" 

        Return strTemp

    End Function

можно просто:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 'Функция создания строки подключения к серверу 
    Public Shared Function BuildCnnStr() As String

        Return = "data source=409ADMIN;integrated security=SSPI;initial catalog=delupins;persist security info=False"
         'strTemp = "data source=STALKER;integrated security=FALSE;initial catalog=delupins;persist security info=False;uid=sa;pwd=" 

    End Function
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вопрос по внесению изменений в базу SQL Server.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]