⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 warrentinput.cs

📁 用vs2003和SQLServer2000开发的财务管理系统
💻 CS
📖 第 1 页 / 共 4 页
字号:
			if ( myHitTest.Type == System.Windows.Forms.DataGrid.HitTestType.Cell )
				gridMouseDownTime = DateTime.Now;
		}

		//------------处理鼠标在dataGrid上的单击事件-----------
		private void TextBoxMouseDownHandler(object sender, MouseEventArgs e )
		{
			//第一个判断条件:在单元格的textbox中的双击(即单击DataCell,使它获得焦点后,然后再响应该Cell中的双击事件)
			//第二个判断条件:DataGrid 的 DoubleClick(直接双击Cell就响应双击事件,无须先单击Cell,使它获得焦点,然后再响应双击事件)
			//判断时间间隔是否小于控制面板中所定义的双击间隔时间
			if((e.Button == MouseButtons.Left && e.Clicks == 2 || DateTime.Now < gridMouseDownTime.AddMilliseconds(SystemInformation.DoubleClickTime))&&(this.enableDoubleClick==true))
			{
				this.doubleClicked();
			}		
		}

		//-------双击分录表表格,添加新的分录数据-----------
		private void doubleClicked()
		{			
			newTable.Rows.Add(newTable.NewRow()); //向表中添加一行,保持总有一个新行
			SelectSubject newFrm=new SelectSubject();
			newFrm.ShowDialog();
			int rowNumber=dataGrid2.CurrentCell.RowNumber;
			dataGrid2[rowNumber,0]=mID;
			dataGrid2[rowNumber,1]=mName;
			dataGrid2[rowNumber,2]="0";
			dataGrid2[rowNumber,3]="0";		
			SendKeys.Send("{Tab}");//向活动应用程序发送Tab键,跳到下一控件			
		}

		//------------计算输入的分录表借贷总额-------------
		private void dataGrid2_CurrentCellChanged(object sender, System.EventArgs e)
		{
			if(this.enableDoubleClick==true)
			{
				int rowCount=newTable.Rows.Count;
				decimal debit=0;
				decimal loan=0;
				for(int i=0;i<rowCount;i++)
				{
					if(dataGrid2[i,2]!=DBNull.Value)
					{
						debit+=Convert.ToDecimal(dataGrid2[i,2]);
						loan+=Convert.ToDecimal(dataGrid2[i,3]);
					}
				}
				txt9.Text=debit.ToString();
				txt10.Text=loan.ToString();
			}
		}
		

		//--------------工具栏事务处理----------------
		private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
		{
			if (e.Button.ToolTipText == "首记录")
			{
				this.dataGrid1.UnSelect(cmOrders.Position); //取消原选中的行
				cmOrders.Position = 0;
				this.dataGrid1.Select(cmOrders.Position); //选中当前行
				this.dataGrid1.CurrentRowIndex = cmOrders.Position; //移动表头指示图标
				return;
				
			}
			if (e.Button.ToolTipText == "上一记录")
			{
				if (cmOrders.Position >= 0)
				{
					this.dataGrid1.UnSelect(cmOrders.Position); 
					cmOrders.Position--;
					this.dataGrid1.Select(cmOrders.Position);      
					this.dataGrid1.CurrentRowIndex = cmOrders.Position; 
				}
				return;
			}
			if (e.Button.ToolTipText == "下一记录")
			{
				if (cmOrders.Position <= cmOrders.Count-1)
				{
					this.dataGrid1.UnSelect(cmOrders.Position); 
					cmOrders.Position++;
					this.dataGrid1.Select(cmOrders.Position);       
					this.dataGrid1.CurrentRowIndex = cmOrders.Position; 
				}
				return;
			}
			if (e.Button.ToolTipText == "尾记录")
			{
				this.dataGrid1.UnSelect(cmOrders.Position); 
				cmOrders.Position = cmOrders.Count-1;
				this.dataGrid1.Select(cmOrders.Position);       
				this.dataGrid1.CurrentRowIndex = cmOrders.Position; 
				return;
			}
			if(e.Button.ToolTipText=="新增")
			{
				cmOrders.AddNew();
				//设置按钮
				SetModifyMode(true);
				//设置默认值

				//查询当前会计期间
				string strConn = "workstation id=localhost;Integrated Security=SSPI;database=caiwubook";
				SqlConnection cn=new SqlConnection(strConn);
				cn.Open();
				SqlCommand cmd=cn.CreateCommand();
				cmd.CommandText="select 取值 from 系统参数表 where 参数名称='当前会计期间'";
				txt7.Text=cmd.ExecuteScalar().ToString();//读入当前会计期间
				
				//自动计算最大编号
				cmd.CommandText="select max(凭证编号) 最大编号 from 凭证表";
				object maxResult=cmd.ExecuteScalar();
				int maxID=1;
				if(maxResult!=System.DBNull.Value)//如果当前凭证表为空,则新编号为000001
					maxID=Convert.ToInt32(maxResult)+1;
				
				
				int length=maxID.ToString().Length;
				switch(length)
				{
					case 1:
						txt4.Text="00000"+maxID.ToString();
						break;
					case 2:
						txt4.Text="0000"+maxID.ToString();
						break;
					case 3:
						txt4.Text="000"+maxID.ToString();
						break;
					case 4:
						txt4.Text="00"+maxID.ToString();
						break;
					case 5:
						txt4.Text="0"+maxID.ToString();
						break;
				}

				txt5.Text=DateTime.Now.ToShortDateString();//当前时间
				txt8.Text="未过";//新增凭证的状态都是"未过"
				comboBox1.SelectedText="收";//设置凭证字号

				//允许双击分录表表格添加分录数据
				this.enableDoubleClick=true;

				dataGrid2.ReadOnly=false;
				DataGridStateControl();				
				newTable.Clear();
				
			}

			if(e.Button.ToolTipText=="修改")
			{
				SetModifyMode(true);
				this.enableDoubleClick=true;
				dataGrid2.ReadOnly=false;
			}
			if(e.Button.ToolTipText=="删除")
			{
				
				DialogResult result=MessageBox.Show("将删除凭证记录以及下属的分录信息,是否确认?","删除数据",MessageBoxButtons.OKCancel);
				if(result==DialogResult.OK)
					if(cmOrders.Count>0)
					{
						try
						{
							string strConn = "workstation id=localhost;Integrated Security=SSPI;database=caiwubook";
							SqlConnection cn=new SqlConnection(strConn);
							cn.Open();
							SqlCommand cmd=cn.CreateCommand();
							cmd.CommandText="delete from 分录表 where 凭证编号='"+txt4.Text+"'";//删除分录记录
							cmd.ExecuteNonQuery();
							cmOrders.RemoveAt(cmOrders.Position);
							da1.Update(dataSet11);
							
						}
						catch(Exception express)
						{
							MessageBox.Show(express.ToString(),"错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
							return;
						}

					}

					else
						MessageBox.Show("表中为空,已无可删除数据","提示",MessageBoxButtons.OK,MessageBoxIcon.Error);

			}
			if(e.Button.ToolTipText=="提交")
			{
				if(txt9.Text!=txt10.Text)
				{
					MessageBox.Show("借贷双方不平衡,请检查并修改分录数据后重新输入","错误",MessageBoxButtons.OK,MessageBoxIcon.Warning);
					return;
				}
				cmOrders.EndCurrentEdit();//结束当前编辑操作并提交修改
				int rowCount=newTable.Rows.Count;
				if(rowCount==0)
				{
					MessageBox.Show("请先输入凭证表分录数据后再保存","警告",MessageBoxButtons.OK,MessageBoxIcon.Error);	
					return;
				}
				
				try
				{
					if (dataSet11.GetChanges()!=null)
					{
				
						this.da1.Update(dataSet11);//首先,先保存凭证信息
					}
					string strConn = "workstation id=localhost;Integrated Security=SSPI;database=caiwubook";
					SqlConnection cn=new SqlConnection(strConn);
					cn.Open();
					SqlCommand cmd=cn.CreateCommand();
					cmd.CommandText="delete from 分录表 where 凭证编号='"+txt4.Text+"'";
					cmd.ExecuteNonQuery();//其次,再将该凭证信息对应的分录记录删除
					for(int i=0;i<rowCount;i++)//最后,再逐行重新插入分录数据
					{
							
						if(dataGrid2[i,0].ToString().Trim()!="")//如该行数据为空,则不保存该行
						{
							cmd.CommandText="insert into 分录表([凭证编号], [摘要], [科目代码], [借方], [贷方]) "
								+"values('"+txt4.Text+"','"+dataGrid2[i,4].ToString()+"','"+dataGrid2[i,0].ToString()
								+"',CAST('"+dataGrid2[i,2].ToString()+"'as money),CAST('"+dataGrid2[i,3].ToString()+"' as money))";
							cmd.ExecuteNonQuery();
						}
					}
					this.enableDoubleClick=false;
						
				}
				catch(Exception express)
				{
					MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
					dataSet11.RejectChanges();
				}
				SetModifyMode(false);
				return;		
			}


			if (e.Button.ToolTipText == "取消")
			{
				try
				{
					cmOrders.CancelCurrentEdit();  //取消编辑
					SetModifyMode(false);
					if(txt4.Text.Trim()!="")//恢复显示明细信息
					{
						da2.SelectCommand.Parameters[0].Value=txt4.Text.Trim();
						newTable.Clear();
						da2.Fill(newTable);
						dataGrid2.ReadOnly=true;
					}
				}
				catch(Exception express)
				{
					MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
				}
				return;
			}

			if(e.Button.ToolTipText=="退出")
			{
				
				this.Close();
			}
		}
		//--------------对控件的属性做设置---------------
		private void SetModifyMode(bool blnEdit)
		{
			//设置文本框和下拉列表框属性
			txt4.ReadOnly=!blnEdit;
			txt5.ReadOnly=!blnEdit;
			comboBox1.Enabled=blnEdit;
			
			//设置搜索按钮属性
			btnSearch.Enabled=!blnEdit;
			//设置两个表格的ReadOnly属性
			dataGrid1.ReadOnly=!blnEdit;
			dataGrid2.ReadOnly=!blnEdit;
		}	
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -