private void button2_Click(object sender, EventArgs e) { string connectionString = "Data Source=192.168.4.25,1443;Initial Catalog=BJVVV_Test;Persist Security Info=True;User ID=sasha;Password=Corpse536;Connect Timeout=1200"; SqlConnection connection = new SqlConnection(connectionString); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = new SqlCommand(); da.SelectCommand.Connection = connection; da.SelectCommand.CommandText = "select * from BookAddInf..ScanInfo where IDBase = 1"; DataTable table = new DataTable(); da.Fill(table); foreach (DataRow row in table.Rows) { BJBookInfo book = BJBookInfo.GetBookInfoByPIN((int)row["IDBook"], "BJVVV"); ElectronicExemplarInserter ec = new ElectronicExemplarInserter((int)row["IDBook"], "BJVVV_Test", "BJVVV"); ElectronicExemplarType AccessType = ElectronicExemplarType.Order; if (book.DigitalCopy.ExemplarAccess.Access == 1001) { AccessType = ElectronicExemplarType.Free; } if (book.DigitalCopy.ExemplarAccess.Access == 1002) { AccessType = ElectronicExemplarType.Order; } if (book.DigitalCopy.ExemplarAccess.Access == 1003) { AccessType = ElectronicExemplarType.Indoor; } ec.InsertElectronicExemplar(AccessType); } }
private void button1_Click(object sender, EventArgs e) { int PIN = 0; try { PIN = int.Parse(textBox1.Text); } catch { MessageBox.Show("ПИН должен быть числом!"); return; } ElectronicExemplarType AccessType = ElectronicExemplarType.Free; switch (comboBox2.SelectedIndex) { case 0: AccessType = ElectronicExemplarType.Free; break; case 1: AccessType = ElectronicExemplarType.Indoor; break; case 2: AccessType = ElectronicExemplarType.Order; break; } ElectronicExemplarInserter ec = new ElectronicExemplarInserter(PIN, comboBox1.Text, comboBox1.Text); Utilities.Log log = new Log(); try { ec.InsertElectronicExemplar(AccessType); } catch (Exception ex) { log.WriteLog(DateTime.Now + ". Программа не смогла выполнить вставку электронной копии. Текст ошибки: " + ex.Message); log.Dispose(); ec.Dispose(); MessageBox.Show("Произошла ошибка. Проверьте лог-файл _log.txt в папке с программой. " + ex.Message); return; } log.WriteLog(DateTime.Now + " база:" + comboBox1.Text + " пин:" + PIN + " Тип доступа: " + comboBox2.Text); MessageBox.Show("Готово!"); log.Dispose(); }
public void InsertElectronicExemplar(ElectronicExemplarType type) { switch (this._baseName)//вставлять пока что можем только в эти фонды { case "BJVVV": case "REDKOSTJ": break; default: throw new Exception("В этот фонд " + this._baseName + " временно не добавляются инвентари электронных копий."); } string connectionString = "Data Source=127.0.0.1\\SQL2008R2;Initial Catalog=BJVVV;Persist Security Info=True;User ID=test;Password=test"; this.connection = new SqlConnection(connectionString); connection.Open(); this.transaction = connection.BeginTransaction(); SqlCommand command = new SqlCommand(); command.Connection = connection; command.Transaction = transaction; command.Parameters.Add("pin", System.Data.SqlDbType.Int).Value = this._pin; command.CommandText = "insert into " + this._baseName + "..DATA (IDMAIN,IDBLOCK, Creator) values (@pin, 260, 2);select scope_identity()"; int IdData = Convert.ToInt32(command.ExecuteScalar()); //===================================================================================================================================== //899$a command.CommandText = "select max(COLOR) from " + this._baseName + "..DATAEXT where IDMAIN = @pin"; int Color = Convert.ToInt32(command.ExecuteScalar()); command.Parameters.Add("iddata", SqlDbType.Int).Value = IdData; command.Parameters.Add("color", SqlDbType.Int).Value = ++Color; command.Parameters.Add("sort", SqlDbType.NVarChar).Value = "ХранЦИИТСерверабиблиотеки"; command.CommandText = "insert into " + this._baseName + "..DATAEXT (IDMAIN, IDDATA, MNFIELD, MSFIELD, AFLINKID, IDINLIST, COLOR, SORT, PREFIXLEN, Created, Creator )" + " values ( @pin, @iddata, 899, '$a', 0, 79, @color, @sort, 0, getdate(), 2 );select scope_identity()"; //вставляем в DATAEXT int IdDataExt = Convert.ToInt32(command.ExecuteScalar()); command.Parameters.Add("iddataext", SqlDbType.Int).Value = IdDataExt; command.Parameters.Add("plain", SqlDbType.NVarChar).Value = "…Хран… ЦИИТ Сервера библиотеки"; command.CommandText = "insert into " + this._baseName + "..DATAEXTPLAIN (IDMAIN, IDDATA, IDDATAEXT, PLAIN)" + "values (@pin, @iddata, @iddataext, @plain)"; command.ExecuteNonQuery();//вставляем в DATAEXTPLAIN // у всех одно и то же метонахождение command.Parameters.Add("IDDATA_FREE", SqlDbType.Int).Value = IDDATA_FREE; command.Parameters.Add("IDDATA_INDOOR", SqlDbType.Int).Value = IDDATA_INDOOR; command.Parameters.Add("IDDATA_ORDER", SqlDbType.Int).Value = IDDATA_ORDER; command.CommandText = "insert into " + this._baseName + "..UNIWORDSEXT_RU " + "(IDWORDS, IDMAIN, IDDATA, IDDATAEXT, MNFIELD, MSFIELD)" + "select IDWORDS, @pin IDMAIN, @iddata IDDATA, @iddataext IDDATAEXT, MNFIELD, MSFIELD from " + this._baseName + "..UNIWORDSEXT_RU " + "where IDDATA = @IDDATA_FREE and MNFIELD = 899 and MSFIELD = '$a'"; command.ExecuteNonQuery(); //===================================================================================================================================== //899$b command.CommandText = "select max(COLOR) from " + this._baseName + "..DATAEXT where IDMAIN = @pin"; Color = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["color"].Value = ++Color; command.Parameters["sort"].Value = "ФЭД"; command.CommandText = "insert into " + this._baseName + "..DATAEXT (IDMAIN, IDDATA, MNFIELD, MSFIELD, AFLINKID, IDINLIST, COLOR, SORT, PREFIXLEN, Created, Creator )" + " values ( @pin, @iddata, 899, '$b', 0, 5, @color, @sort, 0, getdate(), 2 );select scope_identity()"; //вставляем в DATAEXT IdDataExt = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["iddataext"].Value = IdDataExt; command.Parameters["plain"].Value = "ФЭД"; command.CommandText = "insert into " + this._baseName + "..DATAEXTPLAIN (IDMAIN, IDDATA, IDDATAEXT, PLAIN)" + "values (@pin, @iddata, @iddataext, @plain)"; command.ExecuteNonQuery();//вставляем в DATAEXTPLAIN // у всех одно и то же наименование фонда или коллекции command.CommandText = "insert into " + this._baseName + "..UNIWORDSEXT_RU " + "(IDWORDS, IDMAIN, IDDATA, IDDATAEXT, MNFIELD, MSFIELD)" + "select IDWORDS, @pin IDMAIN, @iddata IDDATA, @iddataext IDDATAEXT, MNFIELD, MSFIELD from " + this._baseName + "..UNIWORDSEXT_RU " + "where IDDATA = @IDDATA_FREE and MNFIELD = 899 and MSFIELD = '$b'"; command.ExecuteNonQuery(); //===================================================================================================================================== //921$a command.CommandText = "select max(COLOR) from " + this._baseName + "..DATAEXT where IDMAIN = @pin"; Color = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["color"].Value = ++Color; command.Parameters["sort"].Value = "Электроннаякопия"; command.CommandText = "insert into " + this._baseName + "..DATAEXT (IDMAIN, IDDATA, MNFIELD, MSFIELD, AFLINKID, IDINLIST, COLOR, SORT, PREFIXLEN, Created, Creator )" + " values ( @pin, @iddata, 921, '$a', 0, 13, @color, @sort, 0, getdate(), 2 );select scope_identity()"; //вставляем в DATAEXT IdDataExt = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["iddataext"].Value = IdDataExt; command.Parameters["plain"].Value = "Электронная копия"; command.CommandText = "insert into " + this._baseName + "..DATAEXTPLAIN (IDMAIN, IDDATA, IDDATAEXT, PLAIN)" + "values (@pin, @iddata, @iddataext, @plain)"; command.ExecuteNonQuery();//вставляем в DATAEXTPLAIN // у всех один и тот же носитель command.CommandText = "insert into " + this._baseName + "..UNIWORDSEXT_RU " + "(IDWORDS, IDMAIN, IDDATA, IDDATAEXT, MNFIELD, MSFIELD)" + "select IDWORDS, @pin IDMAIN, @iddata IDDATA, @iddataext IDDATAEXT, MNFIELD, MSFIELD from " + this._baseName + "..UNIWORDSEXT_RU " + "where IDDATA = @IDDATA_FREE and MNFIELD = 921 and MSFIELD = '$a'"; command.ExecuteNonQuery(); //===================================================================================================================================== //921$c command.CommandText = "select max(COLOR) from " + this._baseName + "..DATAEXT where IDMAIN = @pin"; Color = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["color"].Value = ++Color; command.Parameters["sort"].Value = "Длявыдачи"; command.CommandText = "insert into " + this._baseName + "..DATAEXT (IDMAIN, IDDATA, MNFIELD, MSFIELD, AFLINKID, IDINLIST, COLOR, SORT, PREFIXLEN, Created, Creator )" + " values ( @pin, @iddata, 921, '$c', 0, 4, @color, @sort, 0, getdate(), 2 );select scope_identity()"; //вставляем в DATAEXT IdDataExt = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["iddataext"].Value = IdDataExt; command.Parameters["plain"].Value = "Для выдачи"; command.CommandText = "insert into " + this._baseName + "..DATAEXTPLAIN (IDMAIN, IDDATA, IDDATAEXT, PLAIN)" + "values (@pin, @iddata, @iddataext, @plain)"; command.ExecuteNonQuery();//вставляем в DATAEXTPLAIN // у всех один и тот же класс издания command.CommandText = "insert into " + this._baseName + "..UNIWORDSEXT_RU " + "(IDWORDS, IDMAIN, IDDATA, IDDATAEXT, MNFIELD, MSFIELD) " + "select IDWORDS, @pin IDMAIN, @iddata IDDATA, @iddataext IDDATAEXT, MNFIELD, MSFIELD from " + this._baseName + "..UNIWORDSEXT_RU " + "where IDDATA = @IDDATA_FREE and MNFIELD = 921 and MSFIELD = '$c'"; command.ExecuteNonQuery(); //===================================================================================================================================== //922$a command.CommandText = "select max(COLOR) from " + this._baseName + "..DATAEXT where IDMAIN = @pin"; Color = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["color"].Value = ++Color; command.Parameters["sort"].Value = "ОцифровкаВГБИЛ"; command.CommandText = "insert into " + this._baseName + "..DATAEXT (IDMAIN, IDDATA, MNFIELD, MSFIELD, AFLINKID, IDINLIST, COLOR, SORT, PREFIXLEN, Created, Creator )" + " values ( @pin, @iddata, 922, '$a', 0, 0, @color, @sort, 0, getdate(), 2 );select scope_identity()"; //вставляем в DATAEXT IdDataExt = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["iddataext"].Value = IdDataExt; command.Parameters["plain"].Value = "Оцифровка ВГБИЛ"; command.CommandText = "insert into " + this._baseName + "..DATAEXTPLAIN (IDMAIN, IDDATA, IDDATAEXT, PLAIN)" + "values (@pin, @iddata, @iddataext, @plain)"; command.ExecuteNonQuery();//вставляем в DATAEXTPLAIN // у всех один и тот же источник поступления command.CommandText = "insert into " + this._baseName + "..UNIWORDSEXT_RU " + "(IDWORDS, IDMAIN, IDDATA, IDDATAEXT, MNFIELD, MSFIELD)" + "select IDWORDS, @pin IDMAIN, @iddata IDDATA, @iddataext IDDATAEXT, MNFIELD, MSFIELD from " + this._baseName + "..UNIWORDSEXT_RU " + "where IDDATA = @IDDATA_FREE and MNFIELD = 922 and MSFIELD = '$a'"; command.ExecuteNonQuery(); //===================================================================================================================================== //922$d - наименование валюты command.CommandText = "select max(COLOR) from " + this._baseName + "..DATAEXT where IDMAIN = @pin"; Color = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["color"].Value = ++Color; command.Parameters["sort"].Value = "RUB"; command.CommandText = "insert into " + this._baseName + "..DATAEXT (IDMAIN, IDDATA, MNFIELD, MSFIELD, AFLINKID, IDINLIST, COLOR, SORT, PREFIXLEN, Created, Creator )" + " values ( @pin, @iddata, 922, '$d', 0, 30, @color, @sort, 0, getdate(), 2 );select scope_identity()"; //вставляем в DATAEXT IdDataExt = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["iddataext"].Value = IdDataExt; command.Parameters["plain"].Value = "RUB"; command.CommandText = "insert into " + this._baseName + "..DATAEXTPLAIN (IDMAIN, IDDATA, IDDATAEXT, PLAIN)" + "values (@pin, @iddata, @iddataext, @plain)"; command.ExecuteNonQuery();//вставляем в DATAEXTPLAIN // у всех одна и та же валюта command.CommandText = "insert into " + this._baseName + "..UNIWORDSEXT_AZ " + "(IDWORDS, IDMAIN, IDDATA, IDDATAEXT, MNFIELD, MSFIELD)" + "select IDWORDS, @pin IDMAIN, @iddata IDDATA, @iddataext IDDATAEXT, MNFIELD, MSFIELD from " + this._baseName + "..UNIWORDSEXT_AZ " + "where IDDATA = @IDDATA_FREE and MNFIELD = 922 and MSFIELD = '$d'"; command.ExecuteNonQuery(); //===================================================================================================================================== //922$c - цена //узнаем цену. Для этого восопльзуемся функцией из API, которая вернёт всю информацию о заданном пине + сведения об файлах электронной копии //API возвращает информацию в виде JSON, поэтому нам нужно подключить ещё библиотеку для работы с этим форматом данных. Newtonsoft.JSON.dll string bookId = this._baseName + "_" + this._pin;//приведём пин к такому виду, который воспринимает API //создадим клиента API LIBFL_API.ServiceSoapClient api = new ServiceSoapClient(); string book = api.GetBookInfoByID(bookId); //Вызовем функцию из API JToken jsonBook = (JToken)JsonConvert.DeserializeObject(book); JToken exemplars = jsonBook["Exemplars"]; //получим все экземпляры int PageCount = 0; foreach (JToken token in exemplars) { if (token["IsElectronicCopy"].ToString().ToLower() == "true") { PageCount = int.Parse(token["CountJPG"].ToString()); break; } } const double PricePerPage = 8.27; double Cost = Math.Round(PricePerPage * PageCount, 2); command.CommandText = "select max(COLOR) from " + this._baseName + "..DATAEXT where IDMAIN = @pin"; Color = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["color"].Value = ++Color; command.Parameters["sort"].Value = (int)(Cost * 100); command.CommandText = "insert into " + this._baseName + "..DATAEXT (IDMAIN, IDDATA, MNFIELD, MSFIELD, AFLINKID, IDINLIST, COLOR, SORT, PREFIXLEN, Created, Creator )" + " values ( @pin, @iddata, 922, '$c', 0, 0, @color, @sort, 0, getdate(), 2 );select scope_identity()"; //вставляем в DATAEXT IdDataExt = Convert.ToInt32(command.ExecuteScalar()); string CostStr = Cost.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture); command.Parameters["iddataext"].Value = IdDataExt; command.Parameters["plain"].Value = CostStr; command.CommandText = "insert into " + this._baseName + "..DATAEXTPLAIN (IDMAIN, IDDATA, IDDATAEXT, PLAIN)" + "values (@pin, @iddata, @iddataext, @plain)"; command.ExecuteNonQuery();//вставляем в DATAEXTPLAIN //===================================================================================================================================== //921$d // у всех разный доступ для читателя string SORT = ""; string PLAIN = ""; int IDINLIST = 0; switch (type)//берем примеры из существующих { case ElectronicExemplarType.Free: command.CommandText = "insert into " + this._baseName + "..UNIWORDSEXT_RU " + "(IDWORDS, IDMAIN, IDDATA, IDDATAEXT, MNFIELD, MSFIELD)" + "select IDWORDS, @pin IDMAIN, @iddata IDDATA, @iddataext IDDATAEXT, MNFIELD, MSFIELD from " + this._baseName + "..UNIWORDSEXT_RU " + "where IDDATA = @IDDATA_FREE and MNFIELD = 921 and MSFIELD = '$d'"; SORT = "Элсвободныйдоступ"; PLAIN = "Эл. свободный доступ"; IDINLIST = 5; break; case ElectronicExemplarType.Indoor: command.CommandText = "insert into " + this._baseName + "..UNIWORDSEXT_RU " + "(IDWORDS, IDMAIN, IDDATA, IDDATAEXT, MNFIELD, MSFIELD)" + "select IDWORDS, @pin IDMAIN, @iddata IDDATA, @iddataext IDDATAEXT, MNFIELD, MSFIELD from " + this._baseName + "..UNIWORDSEXT_RU " + "where IDDATA = @IDDATA_INDOOR and MNFIELD = 921 and MSFIELD = '$d'"; SORT = "Элтольковбиблиотеке"; PLAIN = "Эл. только в библиотеке"; IDINLIST = 6; break; case ElectronicExemplarType.Order: command.CommandText = "insert into " + this._baseName + "..UNIWORDSEXT_RU " + "(IDWORDS, IDMAIN, IDDATA, IDDATAEXT, MNFIELD, MSFIELD)" + "select IDWORDS, @pin IDMAIN, @iddata IDDATA, @iddataext IDDATAEXT, MNFIELD, MSFIELD from " + this._baseName + "..UNIWORDSEXT_RU " + "where IDDATA = @IDDATA_ORDER and MNFIELD = 921 and MSFIELD = '$d'"; SORT = "Элчерезличныйкабинет"; PLAIN = "Эл. через личный кабинет"; IDINLIST = 7; break; } command.ExecuteNonQuery(); command.CommandText = "select max(COLOR) from " + this._baseName + "..DATAEXT where IDMAIN = @pin"; Color = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["color"].Value = ++Color; command.Parameters["sort"].Value = SORT; command.Parameters.Add("idinlist", SqlDbType.Int).Value = IDINLIST; command.CommandText = "insert into " + this._baseName + "..DATAEXT (IDMAIN, IDDATA, MNFIELD, MSFIELD, AFLINKID, IDINLIST, COLOR, SORT, PREFIXLEN, Created, Creator )" + " values ( @pin, @iddata, 921, '$d', 0, @idinlist, @color, @sort, 0, getdate(), 2 );select scope_identity()"; //вставляем в DATAEXT IdDataExt = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["iddataext"].Value = IdDataExt; command.Parameters["plain"].Value = PLAIN; command.CommandText = "insert into " + this._baseName + "..DATAEXTPLAIN (IDMAIN, IDDATA, IDDATAEXT, PLAIN)" + "values (@pin, @iddata, @iddataext, @plain)"; command.ExecuteNonQuery();//вставляем в DATAEXTPLAIN //===================================================================================================================================== //899$p //узнаем какой инвентарь был последним //запросим все command.CommandText = "select A.SORT from " + this._baseName + "..DATAEXT A " + "left join " + this._baseName + "..DATAEXT B on A.IDDATA = B.IDDATA and B.MNFIELD = 921 and B.MSFIELD = '$a' " + "where A.MNFIELD = 899 and A.MSFIELD = '$p' and B.IDINLIST = 13 ";//носитель электронная копия DataTable invsText = new DataTable(); SqlDataAdapter da = new SqlDataAdapter(command); int cnt = da.Fill(invsText); List <int> invNumbers = new List <int>(); string NextInv = ""; int NextInvINT32 = 0; if (cnt > 0) { foreach (DataRow row in invsText.Rows) { string textNum = row["SORT"].ToString(); int num = int.Parse(textNum.Remove(textNum.Length - 1)); invNumbers.Add(num); } int lastInv = invNumbers.Max(); NextInvINT32 = ++lastInv; NextInv = NextInvINT32.ToString() + "э"; } else // если нет электронных инвентарей, то делаем первый { //найдём минимальный первый для текущей базы command.CommandText = "select MIN from " + this._baseName + "..INV_GATES where ID = " + "(select GATE from " + this._baseName + "..LIST_9 where SHORTNAME = 'ФЭД')"; int MinInGate = Convert.ToInt32(command.ExecuteScalar()); NextInv = MinInGate.ToString() + "э"; NextInvINT32 = MinInGate; } //проверим, не выходит ли за ворота полученное значение инвентаря command.CommandText = "select MAX from " + this._baseName + "..INV_GATES where ID = " + "(select GATE from " + this._baseName + "..LIST_9 where SHORTNAME = 'ФЭД')"; int MaxInGate = Convert.ToInt32(command.ExecuteScalar()); if (NextInvINT32 > MaxInGate) { throw new Exception("Инвентарный номер вышел за инвентарные ворота! база: " + this._baseName + ", пин: " + this._pin); } //вставляем в DATAEXT command.CommandText = "select max(COLOR) from " + this._baseName + "..DATAEXT where IDMAIN = @pin"; Color = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["color"].Value = ++Color; command.Parameters["sort"].Value = NextInv; command.CommandText = "insert into " + this._baseName + "..DATAEXT (IDMAIN, IDDATA, MNFIELD, MSFIELD, AFLINKID, IDINLIST, COLOR, SORT, PREFIXLEN, Created, Creator )" + " values ( @pin, @iddata, 899, '$p', 0, 0, @color, @sort, 0, getdate(), 2 );select scope_identity()"; //вставляем в DATAEXT IdDataExt = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["iddataext"].Value = IdDataExt; command.Parameters["plain"].Value = NextInv; command.CommandText = "insert into " + this._baseName + "..DATAEXTPLAIN (IDMAIN, IDDATA, IDDATAEXT, PLAIN)" + "values (@pin, @iddata, @iddataext, @plain)"; //вставляем в DATAEXTPLAIN command.ExecuteNonQuery();//вставляем в DATAEXTPLAIN command.Parameters.Add("NextInv", SqlDbType.NVarChar).Value = NextInv; command.CommandText = "insert into " + this._baseName + "..UNIWORDS_1 (VALUE) values (@NextInv) ; select scope_identity()"; //вставляем в UNIWORDS_1 int IdUniWords_1 = 0; try { //пробуем вставить IdUniWords_1 = Convert.ToInt32(command.ExecuteScalar()); } catch { //если вставка не удалась, то значит уже такое значение есть в таблице. осталось узнать его ID //выяснилось, что BiblioJet не подчищает слова, на которые не осталось ссылок автоматически. наверное это есть в функциях сервисного обслуживания command.CommandText = "select ID from " + this._baseName + "..UNIWORDS_1 where VALUE = @plain"; IdUniWords_1 = (int)command.ExecuteScalar(); } command.Parameters.Add("IdUniWords_1", SqlDbType.Int).Value = IdUniWords_1; command.Parameters["iddataext"].Value = IdDataExt; command.CommandText = "insert into " + this._baseName + "..UNIWORDSEXT_1 (IDWORDS, IDMAIN, IDDATA, IDDATAEXT, MNFIELD, MSFIELD) values " + " (@IdUniWords_1, @pin, @iddata, @iddataext, 899, '$p') "; command.ExecuteNonQuery();//вставляем в UNIWORDSEXT_1 //узнаем ID в INV_ACT. если нет, то создадим command.CommandText = "select ID from " + this._baseName + "..INV_ACT where SOURCE = 5 and NUMBER ='01011901'"; DataTable dt = new DataTable(); cnt = da.Fill(dt); int IdINV_ACT; if (cnt == 0) { command.CommandText = "insert into " + this._baseName + "..INV_ACT (SOURCE, NUMBER, Date, Creator, STATUS, INVOICE, CONTROL_COUNT, YEAR)" + "values ( 5 , '01011901', getdate(), 2 , 0, '', 1000000, 2018 );select scope_identity();"; IdINV_ACT = Convert.ToInt32(command.ExecuteScalar()); } else { IdINV_ACT = Convert.ToInt32(dt.Rows[0][0]); } //узнаем GATE для текущей базы command.CommandText = "select GATE from " + this._baseName + "..LIST_9 where SHORTNAME = 'ФЭД'"; int Gate = (int)command.ExecuteScalar(); //теперь вставим в INV_NO command.Parameters.Add("gate", SqlDbType.Int).Value = Gate; command.Parameters.Add("int32INV", SqlDbType.Int).Value = NextInvINT32; command.Parameters.Add("idACT", SqlDbType.Int).Value = IdINV_ACT; command.CommandText = "insert into " + this._baseName + "..INV_NO (IDMAIN, IDDATA, IDFOUND, INVENTNO, IDACT, GATE, Operator, Date)" + " values (@pin, @iddata, 5, @int32INV, @idACT, @gate, 2 , getdate())"; //код фонла из LIST_9 command.ExecuteNonQuery(); //===================================================================================================================================== //899$w //узнаем какой штрихкод был последним //так как штрихкоды сквозные, а не по фондам, то объединим запрос с редкой книгой command.CommandText = " select A.SORT from BJVVV..DATAEXT A " + " left join BJVVV..DATAEXT B on A.IDDATA = B.IDDATA and B.MNFIELD = 921 and B.MSFIELD = '$a' " + " where A.MNFIELD = 899 and A.MSFIELD = '$w' and B.IDINLIST = 13 " + //носитель электронная копия " union all " + " select A.SORT from REDKOSTJ..DATAEXT A " + " left join REDKOSTJ..DATAEXT B on A.IDDATA = B.IDDATA and B.MNFIELD = 921 and B.MSFIELD = '$a' " + " where A.MNFIELD = 899 and A.MSFIELD = '$w' and B.IDINLIST = 13 "; //носитель электронная копия; DataTable BarText = new DataTable(); da = new SqlDataAdapter(command); cnt = da.Fill(BarText); List <int> Bars = new List <int>(); string NextBar = ""; int NextBarINT32 = 0; if (cnt > 0) { foreach (DataRow row in BarText.Rows) { string textNum = row["SORT"].ToString(); int num = int.Parse(textNum.Substring(1)); Bars.Add(num); } int lastBar = Bars.Max(); NextBarINT32 = ++lastBar; NextBar = "E" + NextBarINT32.ToString(); } else // если нет электронных инвентарей, то делаем первый { NextBar = "E100000001"; } //вставляем в DATAEXT command.CommandText = "select max(COLOR) from " + this._baseName + "..DATAEXT where IDMAIN = @pin"; Color = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["color"].Value = ++Color; command.Parameters["sort"].Value = NextBar; command.CommandText = "insert into " + this._baseName + "..DATAEXT (IDMAIN, IDDATA, MNFIELD, MSFIELD, AFLINKID, IDINLIST, COLOR, SORT, PREFIXLEN, Created, Creator )" + " values ( @pin, @iddata, 899, '$w', 0, 0, @color, @sort, 0, getdate(), 2 );select scope_identity()"; //вставляем в DATAEXT IdDataExt = Convert.ToInt32(command.ExecuteScalar()); command.Parameters["iddataext"].Value = IdDataExt; command.Parameters["plain"].Value = NextBar; command.CommandText = "insert into " + this._baseName + "..DATAEXTPLAIN (IDMAIN, IDDATA, IDDATAEXT, PLAIN)" + "values (@pin, @iddata, @iddataext, @plain)"; //вставляем в DATAEXTPLAIN command.ExecuteNonQuery();//вставляем в DATAEXTPLAIN command.Parameters["iddataext"].Value = IdDataExt; command.CommandText = "insert into " + this._baseName + "..BARCODE_UNITS (IDMAIN, IDDATA, IDDATAEXT, BARCODE, Creator, DateCreate )" + " values ( @pin, @iddata, @iddataext, @plain, 2, getdate() )"; command.ExecuteNonQuery();//вставляем в BARCODE_UNITS //на этом всё //transaction.Rollback(); transaction.Commit(); transaction.Dispose(); connection.Dispose(); command.Dispose(); da.Dispose(); }