2015年11月26日 星期四

asp .net 手動連線


SqlDataReader 類別


從 DataAdapter 填入 DataSet



使用 DataReader 擷取資料


SqlDataReader讀出資料寫入DataTable?


DataSet與DataAdapter,為何不需要自己寫程式去開啟資料庫連線與關閉之?


 如何使用 SqlDataAdapter (一)


如何取得SqlDataReader的所有筆數? 

如何判別有無這位會員?...DataReader的 HasRows屬性與 .Read()方法




******************************


VB.NET_DataSet與DataReader及其相關資料庫連結運用(一)



關於在.NET裡的DataSet經過幾天的使用,稍微有了一些簡單的心得,DataSet裡包含有許多DataTable,這些DataTable彼此還可以透過DataRelation物件來建立表格的關聯性,加上有別於以往的Recordset必須持續連線的狀態,DataSet採用離線運作的模式,不會影響到Database的負擔。


而其中各種不同的元件關係如下圖。



基本上的觀念先釐清就方便了。

'--------------------------------------分格線---------------------------------------'
'--------------------------------------連結法一-------------------------------------'
Imports System.Data.SqlClient
  Private cnn As New SqlConnection
  Private cmd As New SqlCommand
  Private dr As SqlDataReader
    cnn.ConnectionString = "Data Source=G_HISBKS;Initial Catalog=XXX;User ID=XXX"
    cnn.Open()

    cmd.Connection = cnn
    cmd.CommandText = "下SQL語法"
    dr = cmd.ExecuteReader    while dr.Read()
    txb_test.Text = dr("欄位名稱").ToString
    end while
    cmd.Dispose()
    cnn.Close()


'--------------------------------------分格線---------------------------------------'
'--------------------------------------連結法二-------------------------------------'
Imports System.Data.SqlClient
  Private cnn As New SqlConnection
  Private cmd As New SqlCommand

    cnn.ConnectionString = "Data Source=G_HISBKS;Initial Catalog=XXX;User ID=XXX"
    cnn.Open()

    cmd.Connection = cnn
    cmd.CommandText = "下SQL語法"
    cmd.ExecuteNonQuery()

    cmd.Dispose()
    cnn.Close()


'--------------------------------------分格線---------------------------------------'
'--------------------------------------連結法三-------------------------------------'
Imports System.Data.SqlClient
  Private cnn As New SqlConnection
  Private cmd As New SqlCommand
  Private dt As New DataTable
  Private dr As SqlDataReader
    cnn.ConnectionString = "Data Source=G_HISBKS;Initial Catalog=XXX;User ID=XXX"
    cnn.Open()

    cmd.Connection = cnn
    cmd.CommandText = "下SQL語法"
    dr = cmd.ExecuteReader    dt.Load(dr)
    obj_DataGridView.DataSource = dt
    cmd.Dispose()
    cnn.Close()


'--------------------------------------分格線---------------------------------------'
'--------------------------------------連結法四-------------------------------------'
Imports System.Data.SqlClient
  Private cnn As New SqlConnection
  Private cmd As New SqlCommand
  Private da As New SqlDataAdapter
  Private ds As New DataSet
    cnn.ConnectionString = "Data Source=G_HISBKS;Initial Catalog=XXX;User ID=XXX"
    cnn.Open()

    cmd.Connection = cnn
    cmd.CommandText = "下SQL語法"
    da.SelectCommand = cmd
    ds.Clear()
    da.Fill(ds, "自設表單名")    dt.Load(dr)
    obj_DataGridView.DataSource = ds
    obj_DataGridView.DataMember = "自設表單名"

    進行各種ds運用    

    cmd.Dispose()
    cnn.Close()


'--------------------------------------分格線---------------------------------------'
'--------------------------------------連結法五-------------------------------------'
Imports System.Data.SqlClient
  Private cnn As New SqlConnection
  Private cmd As New SqlCommand
  Private da As New SqlDataAdapter
  Private ds As New DataSet
    cnn.ConnectionString = "Data Source=G_HISBKS;Initial Catalog=XXX;User ID=XXX"
    cnn.Open()

    cmd.Connection = cnn
    cmd.CommandText = "下SQL語法"
    da.SelectCommand = cmd
    ds.Clear()
    da.Fill(ds, "自設表單名")    dt.Load(dr)
    obj_DataGridView.DataSource = ds
    obj_DataGridView.DataMember = "自設表單名"

    進行各種ds運用    

    cmd.Dispose()
    cnn.Close()


連結的方式多種,而取值也各有不同表示法

'-----------------------取值法一-----------------------------------------------------
'------------------------------------------------------------------------------------
  cmd.CommandText = "select top 流水號 count from hn_news order by counter desc"
  obj_txtBox.Text = cmd.ExecuteScalar.ToString

'單獨取得第一資料行的第一列值


'-----------------------取值法二-----------------------------------------------------
'------------------------------------------------------------------------------------
  cmd.CommandText = "select * from hn_news order by counter desc"
  dr = cmd.ExecuteReader
  dr.Read()   '讀一列
  obj_txtBox.Text = dr("欄位名稱").ToString

'單筆資料行的值,再依欄位名去抓取各欄位值


'-----------------------取值法三-----------------------------------------------------
'------------------------------------------------------------------------------------
  cmd.CommandText = "select * from hn_news order by counter desc"
  da.SelectCommand = cmd '使用SqlDataAdapter的SelectCommand
  ds.Clear()
  da.Fill(ds, "tab1") '將SqlDataAdapter
  obj_DataGridView.DataSource = ds
  obj_DataGridView.DataMember = "自設表單名"

  If MyDs.Tables(0).Columns.Count > 0 Then
    obj_txtBox.Text1 = ds.Tables(0).Columns(1).ColumnName
    obj_txtBox.Text2 = ds.Tables(0).Rows(0).Item("有效期限").ToString
    obj_txtBox.Text3 = ds.Tables(0).Rows(0).Item("驗收人代號").ToString
  End If


    關於取值法三中
    ds.Tables(0).Columns(1).ColumnName '表示取得table的欄位名稱,上圖中紅框區
    此處中Tables(0)可寫成Tables("表單名"),Columns(1)可寫成Columns("欄位名")

    ds.Tables(0).Rows(0).Item("有效期限").ToString
    ds.Tables(0).Rows(0).Item("欄位名").ToString
    此處中Item("欄位名")可寫成Item(0) 'index
    如果寫ds.Tables(0).Rows(2).Item(4).ToString,表示是table(0)的第3行資料列 第5欄位的值

    MyDs.Tables(0).Columns.Count  '表示傳回的資料列數,用於判斷是否有傳回資料列
    
先暫存於此...

*****************************************************************




asp .net 陣列操作



https://msdn.microsoft.com/zh-tw/library/wak0wfyt.aspx

https://www.dotblogs.com.tw/miblkimo/archive/2013/04/09/101147.aspx

Dim message As String Dim myArray(2) As String myArray(0) = "Visual" myArray(1) = "Basic" myArray(2) = "ASP.NET" For Each msg In myArray message += msg + "," Next label1.Text = message





2015年11月25日 星期三

GridView 手動加入



https://www.dotblogs.com.tw/atowngit/archive/2010/08/12/17166.aspx


手寫GV
https://www.dotblogs.com.tw/topcat/archive/2009/02/23/7266.aspx

MS
https://msdn.microsoft.com/zh-tw/library/w3f99sx1(v=vs.110).aspx


Dim ODT As DataTable = New DataTable("Default")
        ODT.Columns.Add("porder", Type.GetType("System.DateTime"))
        ODT.Columns.Add("dormno", Type.GetType("System.String"))
        ODT.Columns.Add("addr", Type.GetType("System.String"))
        ODT.Rows.Add(DateTime.Now, "5000", "5000")
        Me.GridView3.DataSource = ODT
        Me.GridView3.DataBind()

[GridView] 手動塞值

https://www.dotblogs.com.tw/atowngit/archive/2010/08/12/17166.aspx

透過手寫程式了解GridView的運作






2015年11月24日 星期二

Listbox操作



左右搬移


        For Each li As ListItem In ListBox1.Items
            If li.Selected = True Then
                ListBox2.Items.Add(li)
            End If
        Next

        For i As Integer = ListBox1.Items.Count - 1 To 0 Step -1
            If ListBox1.Items(i).Selected = True Then
                ListBox1.Items.Remove(ListBox1.Items(i))
            End If
        Next

方法:
https://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.listbox(v=vs.110).aspx

REF:
http://163.20.173.56/tch/vb/VB_Small/0h07.htm
http://codex.wiki/question/1178530-4521
http://guessi.pixnet.net/blog/post/26215590-%5B%E7%A8%8B%E5%BC%8F%5D-%E8%87%AA%E8%A8%82listbox-items-(c%23)





讓員工自動滾蛋的好方法

https://www.dotblogs.com.tw/mis2000lab/2015/08/14/fire_2015

曙光,總是在「最深沈的黑夜後」才會出現




網路上分享了「讓新進員工 "快閃"的十種方法」
 
 
這幾張圖片,真的是很經典!快點蒐藏起來。 
 
 
 
本文為「反諷」語氣,並非真的提供招式教您開除員工  :-) 
 
 
 
有幸在大公司待了五年以上
 
我也來分享一下,讓「」員工自動滾蛋的方法
 
第一,優退。
      你現在自己退休,我給您XX優惠,多幾個月薪資。
      你如果不自己退,那今年不加薪、不給紅利、不升等.....只給基本月薪
 
      這招很爛,完全無效!
      因為要裁員的公司,景況不好,本來就發不出紅利、獎金。完全沒有恐嚇力!哈哈!
 
詳見上一篇文章:
 
 
第二,更換工作。
      例如:把業務拉去寫程式。
 
      Boss 目漏兇光 慈祥地說: 老王啊!現在公司要走軟體&創新服務,你雖然是業務,但也要懂才能跟客戶談啊。
                下週要派人受訓,你也跟那幾位年輕RD一起去吧。
                對了,學完後,自己也寫個案子看看.....人總要磨練啊。
 
      或是把寫資料庫的,拉去寫動畫(這點我親自遇見過,不!是親自體驗過!)
 
詳見舊文:
 
 
第三,縮短時程、減少資源。
      總會遇見苦幹實幹的人,真他X的把東西做出來。(不會吧,你真的是超人啊!要整你,卻被你結案了?)
      但人還是要「裁」啊
 
      那就讓他繼續做下去,把時程縮減50%,人員縮減66%.....最後就是要他一個人搞定。
      這不就得了?
 
 
第四,外派。
      調你去大陸XX市「駐點」三個月,
      完成後,再派你去YY城「當顧問」四個月 (看見沒,時間偷偷拉長了)
 
      短期出差,會有一些薪資補貼。
      長期外派,沒有補助喔......就可以整死你。    尤其是有妻有子的中年人,這招最有效
 
      如果對方真的忍下來呢?.......那就請他去環遊世界
      (你知道嗎?亞瑪遜河上游有個部落,打算下單給我們公司,高層要派你去談談看)
      (談什麼?原始部落要我們幫他們代工獨木舟?或是弓箭?)
 
 
 
第五,上面講的都是一般小員工,如果你遇見主管,那要怎麼搞(如何 "火"了部門主管)
 
      感恩,比我更資深的同仁提醒我還有這招:
 
      先搞組織重整,把A、B兩個單位合併。
      然後找一個年輕人當主管。
 
      原本的A、B部門(老)主管給年輕人呼來喚去,很快就會自己滾了。
 
      這招更強力的地方就是:組織合併,必然很多職務重複,就能趕走很多人!
      留下來的呢,就作到死吧
 
      同仁有句名言:「裁員後,總是懲罰 "留下來的人"」
 
      因為人少,工作多(一定會遇缺不補)
      而且紅利、獎金都沒了
 
      表面上不用立刻找工作,但長遠來看,離職的人去外面繞,
      幾年後景氣好了,他「再」回到公司,所謂的「出將入相」,他回鍋以後,可能會比當初「留下的人」更高薪
 
 
 
第六,關門放狗(內鬥)
      總有些人,老僧入定,見多識廣,「一切都是幻覺,嚇不倒我滴」
 
      這時候只能用這一招了
 
      關門放狗,叫人(同輩、同仁)互咬
 
      只要上頭放出一點不安的消息,
      意志力比較弱的、比較沒原則、沒有因果、鬼神觀念的人,就會自動跳出來汪汪叫了
      (至少,他們有表現,表現給老闆看了。夠「積極」吧!)
 
 
 
 
 
如果您想問我解決的方法,我自己試驗過的:
 
 
 
 
相關文章,希望各位不用遇見  :-P
 
 
 
 
 
 
 
如果真的走到最後一步 .....................
 
 
永遠不要讓別人告訴你:你做不到,
即使是我也一樣。
 
你有夢想,就得去保護他。
那些人自己做不到,才會說你也做不到。
 
你想要什麼的話,就努力去追求。
 
.....克里斯.葛德納 <當幸福來敲門>電影主角 真人本尊
(圖片來源 http://www.amiando.com/CG1214TPE.html)

2015年11月19日 星期四

ListBox上下移動 與 ASP 常用方法

ASP.Net ListBox 資料搬移 複選 左右移動 & 上下移動 LINQ應用

http://www.dotblogs.com.tw/erichuang223/archive/2011/11/29/59951.aspx

[Javascript]Listbox的上下位置交換



UPDATE...SELECT
UPDATE a
SET (a1,a2) = (SELECT b1, b2 ....) 

SELECT "欄位名"
FROM "表格名"
WHERE "欄位名" BETWEEN '值一' AND '值二';


使用 INSERT 與 SELECT 加入資料列


INSERT INTO MyTable  (PriKey, Description)
       SELECT ForeignKey, Description
       FROM SomeView;

SELECT LastName, FirstName, Phone
INTO dbo.PhoneList492
FROM dbo.Customers
WHERE Phone LIKE '492%'

使用 DataReader 擷取資料

http://gdlion.blogspot.tw/2013/09/datareader.html
 SqlConnection Conn = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=AdventureWorks;UserId=xxx;Password=123");

            Conn.Open();

            string sql_str = "Select * form Trans_FTP where Trans_Status_WWW='T'";

            SqlCommand cmd = null;
            cmd = new SqlCommand(sql_str, Conn);

            SqlDataReader dr = cmd.ExecuteReader();

            while (dr.Read())
            {
                aa = dr["Trans_Status_WWW"].ToString();
            }
          
            Conn.Close();

【ASP.NET 2.0 學習】ADO.NET基本物件-屬性與方法以文找文
http://blog.yam.com/iamshiao/article/20657643


後置程式手寫SQLDATASOURCE程式新增日期格式之錯誤產生及解決







2015年11月17日 星期二

在DOS模式下備份和刪除整個目錄和檔案 和網芳登入




可用rmdir指令刪除整個目錄下的所有目錄和檔案:
rmdir /s/q d:\temp
其中:
/s 是代表刪除所有子目錄跟其中的檔案。
/q 是不要它在刪除檔案或目錄時,不再問你 Yes or No 的動作。

同時備份目錄和資料夾
xcopy d:\temp C:\test1  /s/a/e 

網路芳鄰設定帳密

net use \\IP /user:ID pass