2012年11月7日 星期三
[C#]dr.delete
http://msdn.microsoft.com/zh-tw/library/ww3k31w0(v=VS.80).aspx
若RowState為added時
代表dt有加入值,但還沒接受變更
這個時候執行
foreach(DataRow dr in dt.Rows)
{
dr.delete();
}
會出現資料集已改變
這時,RowState的狀態是Detached
所以就會直接刪除
要在foreach之前就先執行dt.AcceptChange();
Rowstate的狀態才會是Delete
2012年9月21日 星期五
2012年8月27日 星期一
[C#] MessageBox.Show 應用
跳出錯誤Message視窗
跳出提示訊息方塊
跳出警告訊息方塊
跳出疑問訊息方塊
跳出疑問訊息方塊(YesNoCancel)
public static void ShowError(string MessageText)
{
MessageBox.Show(MessageText, "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
跳出提示訊息方塊
public static void ShowHint(string MessageText)
{
MessageBox.Show(MessageText, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
跳出警告訊息方塊
public static void ShowWarning(string MessageText)
{
MessageBox.Show(MessageText, "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
跳出疑問訊息方塊
public static bool ShowQuestion(string MessageText)
{
return MessageBox.Show(MessageText, "問題", MessageBoxButtons.YesNo, MessageBoxIcon.Question,
MessageBoxDefaultButton.Button2).Equals(DialogResult.Yes);
}
跳出疑問訊息方塊(YesNoCancel)
public static DialogResult ShowConfirm(string MessageText)
{
return MessageBox.Show(MessageText, "問題", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question,
MessageBoxDefaultButton.Button3);
}
2012年8月8日 星期三
[SQL]存取各種資料庫前十筆的語法
存取各種資料庫前十筆的語法
1. ORACLE
SELECT * FROM TABLE1 WHERE ROWNUM<=N
2. INFORMIX
SELECT FIRST N * FROM TABLE1 where 1=1
3. DB2
SELECT * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM WHERE ROWNUM<=N
或者
SELECT COLUMN FROM TABLE where 1=1 FETCH FIRST N ROWS ONLY
4. SQL SERVER
SELECT TOP N * FROM TABLE1 where 1=1
or
SET ROWCOUNT N SELECT * FROM TABLE1 where 1=1 SET ROWCOUNT N1
5. SYBASE
SET ROWCOUNT N SELECT * FROM TABLE1 where 1=1 SET ROWCOUNT N1
6. MYSQL
SELECT * FROM TABLE1 where 1=1 LIMIT N
7. FOXPRO
SELECT * TOP N FROM TABLE ORDER BY COLUMN
8. ACCESS
SELECT TOP N * FROM TABLE1
1. ORACLE
SELECT * FROM TABLE1 WHERE ROWNUM<=N
2. INFORMIX
SELECT FIRST N * FROM TABLE1 where 1=1
3. DB2
SELECT * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM WHERE ROWNUM<=N
或者
SELECT COLUMN FROM TABLE where 1=1 FETCH FIRST N ROWS ONLY
4. SQL SERVER
SELECT TOP N * FROM TABLE1 where 1=1
or
SET ROWCOUNT N SELECT * FROM TABLE1 where 1=1 SET ROWCOUNT N1
5. SYBASE
SET ROWCOUNT N SELECT * FROM TABLE1 where 1=1 SET ROWCOUNT N1
6. MYSQL
SELECT * FROM TABLE1 where 1=1 LIMIT N
7. FOXPRO
SELECT * TOP N FROM TABLE ORDER BY COLUMN
8. ACCESS
SELECT TOP N * FROM TABLE1
2012年8月7日 星期二
[C#]自動產生DataGridView
自動產生DataGridView
DataTable dt = GetScoreTypeTable();
//取得項目類別
DataTable dtItem = AssessScoreProxy.GetAssessItem(101, 8);
foreach (DataRow dr in dt.Rows)
{
TabPage tbpage = new TabPage();
tbpage.Location = new System.Drawing.Point(4, 24);
tbpage.Padding = new System.Windows.Forms.Padding(3);
tbpage.Size = new System.Drawing.Size(685, 539);
tbpage.Name = "tp" + dr["No"];
tbpage.Text = dr["Name"].ToString();
tbpage.TabIndex = Convert.ToInt16(dr["No"]);
tbpage.AutoScroll = true;
//是否自動顯示捲軸
tbpage.UseVisualStyleBackColor = true;
tabControl1.Controls.Add(tbpage);
DataGridView dgv = new DataGridView();
DataGridViewTextBoxColumn colItem = new DataGridViewTextBoxColumn();
DataGridViewTextBoxColumn colScore = new DataGridViewTextBoxColumn();
DataGridViewTextBoxColumn colTotScore = new DataGridViewTextBoxColumn();
DataGridViewTextBoxColumn colScored = new DataGridViewTextBoxColumn();
dgv.AllowUserToAddRows = false;
dgv.AllowUserToDeleteRows = false;
dgv.BackgroundColor = System.Drawing.SystemColors.Window;
dgv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
dgv.Columns.Add(colItem);
dgv.Columns.Add(colScore);
dgv.Columns.Add(colTotScore);
dgv.Columns.Add(colScored);
dgv.Dock = System.Windows.Forms.DockStyle.Fill;
dgv.Location = new System.Drawing.Point(0, 0);
dgv.Name = "dgv";
dgv.RowHeadersWidth = 10;
dgv.RowTemplate.Height = 24;
dgv.Size = new System.Drawing.Size(685, 539);
dgv.TabIndex = 0;
// colItem
colItem.HeaderText = "項目";
colItem.Name = "colItem" + dr["No"];
colItem.ReadOnly = true;
colItem.Width = 150;
colItem.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
// colScore
colScore.HeaderText = "分數";
colScore.Name = "colScore" + dr["No"];
// colTotScore
colTotScore.HeaderText = "此項目所佔總分";
colTotScore.Name = "colTotScore" + dr["No"];
colTotScore.ReadOnly = true;
colTotScore.Width = 150;
// colScored
colScored.HeaderText = "此項目已評分數加總";
colScored.Name = "colScored" + dr["No"];
colScored.ReadOnly = true;
colScored.Width = 180;
DataRow[] drItem = dtItem.Select("ScoreType='" + dr["No"] + "'");
foreach (DataRow drI in drItem)
{
dgv.Rows.Add(drI["ScoreItemName"], "", drI["Percentage"], 0);
}
tbpage.Controls.Add(dgv);
}
2012年8月6日 星期一
[C#]自動產生物件
/// <summary>
/// 自動產生物件
/// </summary>
private void SetTabControlDefault()
{
int pagecount =10;
int count = 30;
//TabPage(1~10)自動產生
for (int J = 0; J < pagecount; J++)
{
TabPage tbpage = new TabPage();
tbpage.Location = new System.Drawing.Point(4, 24);
tbpage.Padding = new System.Windows.Forms.Padding(3);
tbpage.Size = new System.Drawing.Size(685, 539);
tbpage.Name = "tp" + J.ToString();
tbpage.Text = J.ToString();
tbpage.TabIndex = J;
tbpage.AutoScroll = true; //是否自動顯示捲軸
tbpage.UseVisualStyleBackColor = true;
tabControl1.Controls.Add(tbpage);
//label.textbox 每個tabPage各產生30個
for (int i = 0; i < count; i++)
{
Label lb = new Label(); //label
lb.Name = "lb" + tbpage.Name.ToString() + i.ToString();
lb.Text = "lb" + tbpage.Name.ToString() + i.ToString();
lb.AutoSize = true;
lb.Location = new System.Drawing.Point(15, 10 + i * 30);
lb.Size = new System.Drawing.Size(150, 25);
lb.TabIndex = i;
tbpage.Controls.Add(lb);
TextBox txt = new TextBox(); //textbox
txt.Name = "txt" + tbpage.Name.ToString() + i.ToString();
txt.Location = new System.Drawing.Point(150, 10 + i * 30);
txt.Size = new System.Drawing.Size(150, 25);
txt.TabIndex = i;
tbpage.Controls.Add(txt);
}
}
}
2012年7月5日 星期四
[C#]當條件成立.變更背景顏色
當條件成立時,將該列的背景顏色變更
private void dgv_CellFormatting(object sender,DataGridViewCellFormattingEventArgs e)
{
try
{
DataGridView dgv = (sender as DataGridView);
if (dgv.Columns["dgvIsSelf"].Index == e.ColumnIndex)
{
if (Convert.ToBoolean(e.Value) == true) //是自費時,該列的顏色為黃色
{
dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Yellow;
}
else
{
dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White;
}
}
}
catch (Exception ex)
{
ex.ToString();
}
}
2012年7月4日 星期三
[LINQ]合併兩個DataTable
dt1:(id,name,add)
dt2:(id,tel)
要將dt1與dt2合併成
使用LINQ的LEFT JOIN
dt1有資料但dt2沒資料時,資料仍存在,沒有值的dt2就為預設值空白
dt2:(id,tel)
要將dt1與dt2合併成
使用LINQ的LEFT JOIN
dt1有資料但dt2沒資料時,資料仍存在,沒有值的dt2就為預設值空白
var query =
from a in dt1.AsEnumerable()
join b in dt2.AsEnumerable()
on a.Field("NAME") equals b.Field("NAME") into k
from subpet in k.DefaultIfEmpty()
select new
{ ID = a.Field("ID"),
NAME= a.Field("NAME"),
ADD = a.Field("ADDRESS"),
TEL = (subpet == null ? String.Empty: subpet.Field("TEL "))
)};
2012年6月25日 星期一
getdate()日期變化 on sqlserver
getdate()日期變化 on sqlserver
Using SQL Server 2008
Cast Date with No Time Using Convert
Roll Your Own Date
Cast Date With No Time Using Floor
Using SQL Server 2008
-- remove the time
SELECT CAST(GETDATE() AS date) -- 2009-07-12
-- remove the date
SELECT CAST(GETDATE() AS time) -- 08:46:25.8130000
Cast Date with No Time Using Convert
-- Month first
SELECT CONVERT(varchar(12),GETDATE(), 101) -- 06/29/2009
SELECT CONVERT(varchar(12),GETDATE(), 110) -- 06-29-2009
SELECT CONVERT(varchar(12),GETDATE(), 100) -- Jun 29 2009
SELECT CONVERT(varchar(12),GETDATE(), 107) -- Jun 29, 2009
-- Year first
SELECT CONVERT(varchar(12),GETDATE(), 102) -- 2009.06.29
SELECT CONVERT(varchar(12),GETDATE(), 111) -- 2009/06/29
SELECT CONVERT(varchar(12),GETDATE(), 112) -- 20090629
-- Day first
SELECT CONVERT(varchar(12),GETDATE(), 103) -- 29/06/2009
SELECT CONVERT(varchar(12),GETDATE(), 105) -- 29-06-2009
SELECT CONVERT(varchar(12),GETDATE(), 104) -- 29.06.2009
SELECT CONVERT(varchar(12),GETDATE(), 106) -- 29 Jun 2009
-- Time only
SELECT CONVERT(varchar(12),GETDATE(), 108) -- 07:26:16
SELECT CONVERT(varchar(12),GETDATE(), 114) -- 07:27:11:203
Roll Your Own Date
SELECT DATENAME(MONTH, GETDATE()) -- June
SELECT DATENAME(DAY,GETDATE()) -- 29
SELECT DATENAME(YEAR, GETDATE()) -- 2009
-- Concatente values
-- June.29.2009
SELECT DATENAME(MONTH, GETDATE()) + '.' + DATENAME(DAY,GETDATE()) + '.' + DATENAME(YEAR, GETDATE())
Cast Date With No Time Using Floor
-- Get the current day with no time
-- 2009-06-29 00:00:00.000
SELECT CAST(FLOOR(CAST(GETDATE() AS float)) AS datetime)
-- Get the next day
-- 2009-06-30 00:00:00.000
SELECT CAST(CEILING (CAST(GETDATE() AS float)) AS datetime)
2012年5月9日 星期三
[C#] DataRow的刪除
private void SetTestDataTable()
{
DataTable dtTest = new DataTable();
dtTest.Columns.Add("Id",typeof(int));
dtTest.Columns.Add("Name",typeof(string));
dtTest.Rows.Add(1, "aaa");
dtTest.Rows.Add(2, "bbb");
dtTest.Rows.Add(3, "ccc");
dtTest.Rows.Add(4, "ddd");
dtTest.Rows.Add(5, "eee");
foreach (DataRow dr in dtTest.Rows)
{
if (Convert.ToInt16(dr["id"].ToString()) % 2 == 0)
{
dr.Delete(); //標記要刪資的資料列
}
}
dtTest.AcceptChanges(); //真正移除作業
}
2012年5月8日 星期二
[C#]鍵盤事件-按Enter執行動作及Ctrl+A全選
Button按下ENTER時做的動作
private void Button1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (Char)Keys.Enter)
{
TextBox.Text = "";
}
}
TextBox內設定全選功能
private void TextBox_SelectAll(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.A)
{
(sender as TextBox).SelectAll();
}
}
2012年5月4日 星期五
[C#]使用xmlWriter建立xml文件
使用xmlWriter建立xml文件
XmlWriter writer = null;
Encoding enc = Encoding.GetEncoding("big5");
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = false;
settings.NewLineOnAttributes = true;
settings.Encoding = enc;
settings.Indent = true;
settings.IndentChars = ("\t");
spath = @"c:\" + sNow + ".xml";
writer = XmlWriter.Create(spath, settings);
writer.WriteStartElement("body");
writer.WriteElementString("d1", "001");
writer.WriteElementString("d2", "002");
writer.WriteEndElement();
writer.Flush();
[SQL]將日期轉成yyymmdd 的格式
將日期轉成yyymmdd 的格式
SELECT
RIGHT(CAST(1000+ DATEPART(yy, GetDate())-1911 AS CHAR(4)),3) +
RIGHT(CAST(100 + DATEPART(MM, GetDate()) AS CHAR(3)),2) +
RIGHT(CAST(100 + DATEPART(DD, GetDate()) AS CHAR(3)),2) AS ToDay
[C#]常用逸出字元
C#常用逸出字元
跳脫字元 | 功能說明 |
\' | 單引號 |
\" | 雙引號 |
\\ | 反斜線 |
\a | 發出一聲警告 |
\b | 倒退一個字元 |
\f | Form Feed |
\n | 換新行 |
\r | 換行並移到最前方 |
\t | 水平方向的Tab |
\v | 垂直方向的Tab |
2012年3月20日 星期二
[INFORMIX] 日期轉民國年
SELECT substr(CAST(1000+YEAR(reportdate)-1911 AS CHAR(4)),-3),
substr(CAST(100+MONTH(reportdate) AS CHAR(3)),-2) ,
substr(CAST(100+DAY(reportdate) AS CHAR(3)),-2),
substr(CAST(1000+YEAR(reportdate)-1911 AS CHAR(4)),-3) ||
substr(CAST(100+MONTH(reportdate) AS CHAR(3)),-2) ||
substr(CAST(100+DAY(reportdate) AS CHAR(3)),-2)
FROM Totfa
WHERE ReportMonth = 10102
結果:
(expression) (expression)_1 (expression)_2 (expression)_3
101 03 05 1010305
2012年2月27日 星期一
[LINQ]使用LINQ將Datatable轉成xml
使用LINQ將Datatable轉成xml
using System.Xml.Linq;
執行後結果如下
using System.Xml.Linq;
private string GetXmlByDt(DataTable dt)
{
XDocument Employee = new XDocument(new XDeclaration("1.0", "utf-8", "true"),
new XElement("MB1", from cust in dt.AsEnumerable()
select new XElement("A11", cust["No"]
)));
return Employee.ToString();
}
執行後結果如下
2012年2月17日 星期五
[SQL]在SQL裡下迴圈
想把另一個table的資料更新至此table裡,
用下迴圈的方式...目前想到比較好的解答就這樣了
用下迴圈的方式...目前想到比較好的解答就這樣了
declare @Start int
declare @End int
set @Start =1
set @End=3480
while (@Start < @End)
begin
update TABLE_A
set BirthDay =
(select BirthDay from TABLE_B where PtNo = @Start)
WHERE PtNo = @Start
set @Start=@Start +1
end
2012年2月7日 星期二
[C#]記錄程式執行時間
記錄程式執行時間
要先using System.Diagnostics;
要先using System.Diagnostics;
using System.Diagnostics;
Stopwatch sw = new Stopwatch();
sw.Reset();
sw = Stopwatch.StartNew();
//要測時間的程式碼放這裡
sw.Stop();
TimeSpan e1 = sw.Elapsed;
long ms = sw.ElapsedMilliseconds;
MessageBox.Show(e1 + "秒 " + ms + "毫秒");
2012年1月19日 星期四
[C#]將文件寫入檔案裡
將文件寫入檔案裡,會自動產生一個檔案,把文字寫入此檔案裡
private bool CreateXml(string xml) { try { string sNow = DateTime.Today.Year.ToString() + DateTime.Now.ToString("MMddHHmmss"); string spath = @"c:\RecXml\RecsXml" + sNow + ".xml"; StreamWriter sw = File.AppendText(spath); sw.WriteLine(xml); sw.Flush(); sw.Close();
HisMessage.ShowHint("檔案寫入成功,路徑:" + spath); return true; } catch { HisMessage.ShowHint("寫入xml檔時發生錯誤"); return false; } }
[SQL]將查詢出來的表格轉成XML-FOR XML
將查詢出來的表格轉成XML-FOR XML
SELECT執行後,就會直接產生可點開的XML
SELECT 1 AS A00, NhiType AS A01, 1.0 AS A02 FROM NhiICCardRecord WHERE NhiNo = 1 FOR XML PATH ('REC')
SELECT執行後,就會直接產生可點開的XML
[C#]顯示處理進度狀態-ProgressBar
想要在畫面上顯示處理進度狀態.從工具箱抓出來再加幾小段程式即可
progressBar1.Maximum = 600;
for (int i = 1; i <= 600; i++)
{
sxml = sxml + GetREC(i);
progressBar1.Value = i;
}
2012年1月18日 星期三
[C#]Switch-case用法
Switch-case用法...
因為太常忘記.就放著讓我隨時可以copy
因為太常忘記.就放著讓我隨時可以copy
private void Switch_Test(Int16 INo) { switch (INo) { case 0: MessageBox.Show("0"); break; case 1: MessageBox.Show("1"); break; case 2: MessageBox.Show("2"); break; default : MessageBox.Show("default"); break; } }
[SQL]查詢日期轉為民國年
查詢日期轉為民國年,有時候資料需要前面加0,利用RIGHT與CAST配合
PRINT 'CAST : '
+ RIGHT(CAST(1000+ DATEPART(yy, getdate())-1911 AS CHAR(4)),3)+'-'
+ RIGHT(CAST(100 + DATEPART(MM, getdate()) AS CHAR(3)), 2) +'-'
+ RIGHT(CAST(100 + DATEPART(DD, getdate()) AS CHAR(3)), 2) +' '
+ RIGHT(CAST(100 + DATEPART(HH, getdate()) AS CHAR(3)), 2) +':'
+ RIGHT(CAST(100 + DATEPART(MI, getdate()) AS CHAR(3)), 2) +':'
+ RIGHT(CAST(100 + DATEPART(SS, getdate()) AS CHAR(3)), 2)
--------print--------------
/**
CAST : 101-01-18 11:28:38
**/
2012年1月17日 星期二
[C#]TextBox全選-Ctrl+A
TextBox全選按Ctrl+A都沒反應....
把下面這串Function套到textbox事件的keydown即可!!
private void TextBox_SelectAll(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.A)
{
(sender as TextBox).SelectAll();
}
}
2012年1月13日 星期五
2012年1月10日 星期二
codetest
string Dir = page.Server.MapPath("~/");
StreamWriter sw = File.AppendText(Dir + "input.txt");
sw.WriteLine("第一行");
sw.WriteLine("第二行");
sw.Flush();
sw.Close();
訂閱:
文章 (Atom)