DailyReport自动保存工具
PS:自己初学C#,SharePoint时做的一个小tool。
Friday, November 28, 2014
这个tool编译出来以后可以把部门的daily report保存到本地,数据库,和SharePoint的daily report list中,经过测试能够在我本地的SharePoint2010 SP1环境上正常运行了。
学习C#的第二个小程序,过程中遇到了好多问题,不是很完善,就是意思意思,本次程序练习提取窗体中的信息;向数据库中建表,判断并插入数据;把文件保存到本地指定的路径下;把内容在SharePoint指定list中保存成item并为列赋值。
在此记录一下。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using Microsoft.SharePoint;
using System.Globalization;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void SaveToLocalButton_Click(object sender, EventArgs e)
{
SaveToLocal();
}
private void SaveToSQLButton_Click(object sender, EventArgs e)
{
SaveToSQL();
}
private void SaveToWebButton_Click(object sender, EventArgs e)
{
try
{
SaveToWeb();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void SaveToAllButton_Click(object sender, EventArgs e)
{
SaveToLocal();
SaveToSQL();
SaveToWeb();
}
private void SaveToLocal()
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == DialogResult.OK)
{
string path = fbd.SelectedPath;
MessageBox.Show("Your daily reort will be saved under the path:" + path);
string filename = "DailyReport.doc";
DailyReportText.SaveFile(@path + "/" + filename, RichTextBoxStreamType.TextTextOleObjs);
}
}
private void SaveToSQL()
{
string connectString = @"Data Source=WIN-VVBGFRT65MV\ALWAYSON2;initial catalog=master;uid=sa;pwd=1qaz2wsxE;integrated security=true;pooling=false";
SqlConnection myConnect = new SqlConnection(connectString);
myConnect.Open();
SqlCommand myCommand = myConnect.CreateCommand();
string dateLine = DailyReportText.Lines[0];
int index = dateLine.IndexOf(":");
int lastIndex = dateLine.Length-1;
string date = dateLine.Substring(index+1, lastIndex-index);
myCommand.CommandText =
"use master if exists(select * from dbo.SysObjects where name='DailyReportDB') begin insert into DailyReportDB(date,content) values('"
+ date + "','" + DailyReportText.Text.ToString()+
"') end else begin create table DailyReportDB(date varchar(1000) primary key,content varchar(1000)) end";
try
{
SqlDataReader myDataReader = myCommand.ExecuteReader();
myDataReader.Close();
}
catch (SqlException)
{
MessageBox.Show("The report of the date you input has already existed in database!");
}
myConnect.Close();
}
private void SaveToWeb()
{
try
{
using (SPSite qaSite = new SPSite("http://win-vvbgfrt65mv"))
{
using (SPWeb qaWeb = qaSite.OpenWeb("/"))
{
string listURL = "http://win-vvbgfrt65mv/Lists/DailyReport";
SPList DailyReportList = qaWeb.GetList(listURL);
SPListItem item = DailyReportList.Items.Add();
//Get the date and time from the form
string dateLine = DailyReportText.Lines[0];
int index = dateLine.IndexOf(":");
int lastIndex = dateLine.Length-1;
string date = dateLine.Substring(index+1, lastIndex-index);
//Get the created by
SPUser currentUser = qaWeb.CurrentUser;
//Take the value into colume
string DataAndTime = date.ToString();
string Description = DailyReportText.Text.ToString();
try
{
string dateFormat = "yyyy/MM/dd";
DateTime SPdate = DateTime.ParseExact(date, dateFormat, CultureInfo.CurrentCulture, DateTimeStyles.None);
//ToShortDateString is important for format
item["Date and Time"] = SPdate.ToShortDateString();
}
catch (Exception)
{
MessageBox.Show("TimeFormat is not right!");
}
try
{
item["Description"] = Description;
}
catch (Exception)
{
MessageBox.Show("Description is not right!");
}
item["Created By"] = currentUser;
try
{
item.Update();
}
catch (Exception ex)
{
MessageBox.Show("Item update Exception!");
MessageBox.Show(ex.ToString());
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
附上一张SharePoint中生成item的图片:
DailyReport自动保存工具的更多相关文章
- 【工具】Sublime Text 自动保存功能
经常需要所以要频繁用到"ctrl+s"保存还是挺麻烦的,所以有的人需要用到失去焦点自动保存功能,这里简单记录下 1.点击"Preferences"里的设置-用户 ...
- 微信小程序 vscode 自动保存 保存自动编译 微信开发者工具崩溃
修改vscode的自动保存延迟时间,将 auto save delay 选项 修改的长一点.
- sublime如何自动保存
sublime是前端开发者喜欢使用的工具,它有很多快捷方式可以让我们快速的编写代码:在开发过程中,每次修改代码之后都要按Ctrl+S保存.在这里向大家介绍一下如何设置让它自动保存. 一.打开subli ...
- ArcGIS Add-in——自动保存编辑
需求:由于初次使用ArcGIS编辑器不习惯.数据量大造成经常程序未响应.计算机断电等因素,造成编辑的数据没有保存,影响了生产效率,本人根据草色静然的博文,总结了自动保存编辑的实现方法. 分析:自动保存 ...
- 好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)
转载:http://www.cnblogs.com/lyhabc/p/3322437.html 挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面) 这个工具主要就是 ...
- .NET DLL 保护措施应用实例(百度云批量保存工具)
最近做了个小工具,将保护措施思路全部应用到了此工具中. 点我下载 百度云批量保存工具是一款专门用于自动批量保存百度云分享的软件. 本软件特点:1:完全模拟人工操作:2:可以批量保存百度分享的文件( ...
- iOS 本地自动打包工具
1.为什么要自动打包工具? 每修改一个问题,测试都让你打包一个上传fir , 你要clean -> 编译打包 -> 上传fir -> 通知测试.而且打包速度好慢,太浪费时间了.如果有 ...
- 转:Grunt:任务自动管理工具
Grunt:任务自动管理工具 来自<JavaScript 标准参考教程(alpha)>,by 阮一峰 目录 安装 命令脚本文件Gruntfile.js Gruntfile.js实例:gru ...
- 挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)
原文:挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面) 挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面) 这个工具主要就是自 ...
随机推荐
- codevs 2235 机票打折
http://codevs.cn/problem/2235/ 2235 机票打折 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 青铜 Bronze 题解 题目描述 ...
- JS不兼容减号,css属性转驼峰写法
<script> function changeFormat(str) { return str.replace(/-(\w)/g, function(k, r) { return r.t ...
- eclipse批量删除断点(转)
1.首先调出BreakPoints选项卡(Window--show View--Other--BreakPoints). 2.选择BreakPoints选项卡,选择所有断点,点击删除即可.
- HDU 3691 Nubulsa Expo(全局最小割Stoer-Wagner算法)
Problem Description You may not hear about Nubulsa, an island country on the Pacific Ocean. Nubulsa ...
- 夺命雷公狗---DEDECMS----5快速入门之商城快速搭建实现快递方式和支付方式的显示
我们现在用dedecms快速搭建一个商场,方法如下所示: 如此类推.写多几个栏目,效果 如下所示: 然后我们添加几个商品,记得要刷新下页面噢,不见见不到商品 添加成功后去看看效果如何: 出来了,但是如 ...
- c语言对文件操作完成后尽量手动关闭
是这样的,我写了一个函数,传给函数文件名,在函数中对文件写入一些内容.在这个函数的后面没有手动使用 fclose. 当在程序中对这个函数调用两次之后,最终把要写入的文件写错了. 在第二次使用 fope ...
- 【fedora】强制解除yum锁定
运行yum makecache时出现yum update时候出现Another app is currently holding the yum lock解决方法yum被锁定了. 可以通过执行 rm ...
- java 文件及流读取
在Java语言的IO编程中,读取文件是分两个步骤:1.将文件中的数据转换为流,2.读取流内部的数据.其中第一个步骤由系统完成,只需要创建对应的流对象即可,对象创建完成以后步骤1就完成了,第二个步骤使用 ...
- Sql Server 检测死锁的SQL语句
首先创建一个标量值函数DigLock,用来递归检测SqlServer中的每一个会话是否存在加锁循环,如果该函数最终返回1则表示检测到了加锁循环 (也就是说检测到了死锁),如果最终返回0则表示没有检测到 ...
- UIViewController启动过程
流程:判断是否view属性为nil,如果为空,调用loadView方法,如果重写了loadView方法,那么从代码创建普通视图,如果没有重写并且有storyBoard或者xib文件,那么从storyB ...