// добавление новой записи в документы public bool AddDocRec(CurDoc xD, DataGrid dgDoc) { bool ret = true; try { DataRow dr = DT[NSI.TBD_DOC].dt.NewRow(); dr["SOURCE"] = DOCSRC_CRTD; ret = UpdateDocRec(dr, xD); if (ret == true) { DT[NSI.TBD_DOC].dt.Rows.Add(dr); xD.nId = (int)dr["ID"]; xD.drCurRow = dr; if (dgDoc != null) { dgDoc.CurrentRowIndex = ((System.ComponentModel.IListSource)dgDoc.DataSource).GetList().Count - 1; } } } catch (System.Data.ConstraintException) { ret = false; ServClass.ErrorMsg("Документ уже существует"); } catch (Exception ex) { ret = false; object x = ex.GetType(); } return(ret); }
// заполнение строки таблицы документов public bool UpdateDocRec(DataRow dr, CurDoc xD) { bool ret = true; DocPars x = xD.xDocP; try { if (x.nTypD != AppC.EMPTY_INT) { dr["TD"] = x.nTypD; } else { dr["TD"] = System.DBNull.Value; } if (x.dDatDoc != DateTime.MinValue) { dr["DT"] = x.dDatDoc.ToString("yyyyMMdd"); } else { dr["DT"] = System.DBNull.Value; } if (x.sNomDoc != "") { dr["SYSN"] = int.Parse(x.sNomDoc); } else { dr["SYSN"] = System.DBNull.Value; } if (x.nPost != AppC.EMPTY_INT) { dr["KPP1"] = x.nPost; } else { dr["KPP1"] = System.DBNull.Value; } Encoding enc866 = Encoding.GetEncoding(866); dr["BIN2D"] = enc866.GetString(xD.From2D, 0, xD.nFull2D); dr["HEAD2D"] = xD.nHead2D; dr["FULL2D"] = xD.nFull2D; dr["IDSER2D"] = xD.nIDSer; dr["PP2_NAME"] = "2D-данные"; } catch { ret = false; } return(ret); }
// загрузка одной таблицы // private void Read1NSI(TableDef td, int nReg) // { // int tc1, nE = 0; // string sPath = ""; // object dg = null; // td.sDTStat = ""; // if ( ((td.nType & TBLTYPE.NSI) == TBLTYPE.NSI) && // ((td.nType & TBLTYPE.LOAD) == TBLTYPE.LOAD) || (nReg == LOAD_ANY)) // НСИ загружаемое // { // if ((td.nState == DT_STATE_INIT) || (nReg == LOAD_ANY)) // { // if (td.dg != null) // { // dg = td.dg.DataSource; // td.dg.DataSource = null; // } // td.nErr = 0; // tc1 = Environment.TickCount; // try // { // sPath = sPathNSI + td.sXML; // td.dt.BeginLoadData(); // nE = 1; // td.dt.Clear(); // nE = 2; // td.dt.ReadXml(sPath); // nE = 3; // td.dt.EndLoadData(); // td.nState = DT_STATE_READ; // } // catch // { // td.nErr = nE; // td.nState = DT_STATE_READ_ERR; // } // td.sDTStat = ServClass.TimeDiff(tc1, Environment.TickCount); ///* // if (i == I_MC) // CreateKrEAN(td.dt); //*/ // if (dg != null) // td.dg.DataSource = dg; // dg = null; // } // } // } // возвращает из справочника заданное поле //internal RezSrch GetNameSPR(string iT, object[] xSearch, string sFieldName) //{ // RezSrch zRet = new RezSrch("-???-"); // DataRow dr = null; // try // { // dr = DT[iT].dt.Rows.Find(xSearch); // zRet.sName = dr[sFieldName].ToString(); // zRet.bFind = true; // } // catch // { // } // return (zRet); //} // чтение текущей строки в объект панели документов public bool InitCurDoc(CurDoc xD) { bool ret = false; if (xD.drCurRow != null) { try { //int i = xD.nCurRec; DocPars x = xD.xDocP; //DataRow dr = DT[NSI.I_DOCOUT].dt.Rows[i]; DataRow dr = xD.drCurRow; xD.nId = (int)((dr["ID"] == System.DBNull.Value) ? AppC.EMPTY_INT : dr["ID"]); xD.nDocSrc = (int)((dr["SOURCE"] == System.DBNull.Value) ? AppC.EMPTY_INT : dr["SOURCE"]); x.nTypD = (int)((dr["TD"] == System.DBNull.Value) ? AppC.EMPTY_INT : dr["TD"]); x.nPost = (long)((dr["KPP1"] == System.DBNull.Value) ? AppC.EMPTY_INT : dr["KPP1"]); x.sNomDoc = ((dr["SYSN"] == System.DBNull.Value) ? "" : dr["SYSN"].ToString()); /* * x.sSmena = ((dr["KSMEN"] == System.DBNull.Value) ? "" : dr["KSMEN"].ToString()); * x.nUch = (int)((dr["NUCH"] == System.DBNull.Value) ? AppC.EMPTY_INT : dr["NUCH"]); * x.nEks = (int)((dr["KEKS"] == System.DBNull.Value) ? AppC.EMPTY_INT : dr["KEKS"]); */ try { x.dDatDoc = DateTime.ParseExact(dr["DT"].ToString(), "yyyyMMdd", null); } catch { x.dDatDoc = DateTime.MinValue; } //xD.nStrokZ = xD.drCurRow.GetChildRows(NSI.REL2ZVK).Length; Encoding enc866 = Encoding.GetEncoding(866); xD.nHead2D = (int)dr["HEAD2D"]; xD.nFull2D = (int)dr["FULL2D"]; xD.nIDSer = (long)dr["IDSER2D"]; xD.From2D = enc866.GetBytes((string)dr["BIN2D"]); ret = true; } catch { } } return(ret); }
// запись скорректированной строки в таблицу public bool ChgDocRec(CurDoc xD) { bool ret = false; try { //DataRow dr = DT[I_DOCOUT].dt.Rows[xD.nCurRec]; ret = UpdateDocRec(xD.drCurRow, xD); } catch { ret = false; } return(ret); }
// при активации панели документов private void EnterInDoc() { if (b1stEner == true) { b1stEner = false; //xNSI.ChgGridStyle(NSI.TBD_DOC, NSI.GDOC_INV); lInfDocLeft.Text = (xSm.sUser == AppC.SUSER)?"Admin":xSm.sUser; xCDoc = new CurDoc(AppC.F_ADD_REC); if (xSm.nDocs > 0) {// есть записи для просмотра RestShowDoc(false); } } if (bEditMode == false) // в режиме просмотра { StatAllDoc(); if (xCDoc.drCurRow != null) {// есть запись для отображения //xCDoc.drCurRow["MEST"] = TotMest(NSI.REL2TTN); //dgDoc.Focus(); } } }
// добавить полученный символ public int AddNew(byte[] b, int nL, bool b2DFull) { int nOfs, nRet = AppC.RC_OK; xS = new One2DSym(); xS.buf = b; xS.nL = nL; nOfs = 0; // достать служебную инфу из заголовка ParseLev(b, ref nOfs, xСDef2D.lDef[0], 0); switch (State) { case READ2D_STATE.R_WAIT_SER: nID_Serial = xS.nID_Serial; if (b2DFull == false) { xS.nMaxSer = 1; xS.nInSer = 1; } nMaxSer = xS.nMaxSer; nFileLen = AddFileLen(0); nSaved2D = 1; lSavedNs.Add(xS.nInSer); lSym.Add(xS); xD = new CurDoc(AppC.F_ADD_REC); State = TestIsSame(); switch (State) { case READ2D_STATE.R_SAME_DOC: ServClass.PlayMelody(W32.MB_3GONG_EXCLAM); DialogResult dr = MessageBox.Show("Отменить ввод(Enter)?\r\n(ESC) - переписать", "Документ существует!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (dr != DialogResult.OK) { bRewrite = true; State = READ2D_STATE.R_WAIT_NEXT; } break; case READ2D_STATE.R_WAIT_NEXT: break; } break; case READ2D_STATE.R_WAIT_NEXT: if (nID_Serial == xS.nID_Serial) { if (!lSavedNs.Contains(xS.nInSer)) { nSaved2D++; lSavedNs.Add(xS.nInSer); lSym.Add(xS); nFileLen = AddFileLen(nFileLen); } } break; } if (State == READ2D_STATE.R_WAIT_NEXT) { if ((nSaved2D == nMaxSer) || (b2DFull == false)) { State = READ2D_STATE.R_FULL_SER; PrepBinDat(true, b2DFull); } } return(nRet); }