Pages - Menu

2013年12月9日 星期一

兩個usercontrol互相傳值

在A裡面透過建立一個事件,將 ChangePageSizeBySelect 讓 default.aspx能夠抓到事件, 讓default.aspx能夠抓到值,然後將值丟給B,做dropdownlist的databind A.ascx.vb(裡面的dropdownlist 一定要做autopost back) Public Property GetUC() As String Get GetUC = DropDownList1.SelectedValue End Get Set (value As String) DropDownList1.SelectedValue = value End Set End Property Public Delegate Sub UserControlEventHandler (ByVal sender As Object , ByVal str As String ) Public Event ChangePageSizeBySelect As UserControlEventHandler Protected Sub DropDownList1_SelectedIndexChanged( ByVal sender As Object, ByVal e As System.EventArgs ) Handles DropDownList1.SelectedIndexChanged RaiseEvent ChangePageSizeBySelect(Me , DropDownList1.SelectedValue) End Sub Default.aspx.vb Protected Sub order_mainCus_code_ChangePageSizeBySelect(sender As Object , str As String ) Handles order_mainCus_code.ChangePageSizeBySelect order_mainDiscus_customer.GetUC() = order_mainCus_code.GetUC() End Sub B.ascx.vb Public Property GetUC() As String Get GetUC = DropDownList1.SelectedValue End Get Set (value As String) Dim conn = New SqlConnection Dim cmd As SqlCommand Dim adapter As New SqlDataAdapter Dim ds As New DataSet Dim dt As New DataTable Dim SqlString As String conn.ConnectionString = System.Web.Configuration.WebConfigurationManager .ConnectionStrings( "ConnectionString").ConnectionString() '使用web config SqlString = "select * from discus_customer where cus_code='" & value & "'" 'Label1.Text = SqlString adapter = New SqlDataAdapter (SqlString, conn) adapter.Fill(ds, "Discus_customer" ) DropDownList1.DataValueField = "discus_code" DropDownList1.DataTextField = "discus_name" DropDownList1.DataSource = ds.Tables( "Discus_customer" ).DefaultView DropDownList1.DataBind() Label1.Text = SqlString End Set End Property

2013年11月29日 星期五

VS2010 使用 CrystalReport 發生控制項錯誤

從SAP下載完後安裝CrystalReport,
建完報表後,要拉Viewer顯示內容,
卻發現不管怎麼拉,都會發生『建立控制項發生錯誤』。
或者是發生『'CrystalReportViewer' 在命名空間 'CrystalDecisions.Web' 中模稜兩可』

到Webconfig裡面尋找
看到這一段

      <assemblies>
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add assembly="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add assembly="CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
      </assemblies>

先取得version的編號,
再來到aspx看前面幾行,會看到
<%@ Register assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" namespace="CrystalDecisions.Web" tagprefix="CR" %>

他的version是10.5.3700.0  將他改成  13.0.2000.0  就正常了...

2013年10月15日 星期二

VB.net 播放音效(懶人包)

一.加入資源
  1. 在 [方案總管] 中選取專案之後,請在 [專案] 功能表上,按一下 [屬性]。
  2. 請選取 [資源] 索引標籤。
  3. 在 [資源設計工具] 工具列上,指向 [加入資源],按一下箭頭,然後按一下 [加入現有檔案]。
  4. 在 [將現有的檔案加入資源] 對話方塊中,瀏覽至內含要加入之資源的檔案 (.bmp、.ico、.wav 等),再按一下 [開啟]。
    檔案將會加入至 Resources 目錄,資源設計工具則會開啟您所加入資源類型的 [分類] 窗格。
  5. 對於檔案資源,您可以選擇性地在 [屬性] 視窗中設定檔案的 Encoding 和 FileType 屬性。
    二.播放音效
    1.沒加入資源
        My.Computer.Audio.Play("C:\Waterfall.wav", _
            AudioPlayMode.BackgroundLoop)
    
    2.有加入資源
        My.Computer.Audio.Play(My.Resources.Waterfall, _
              AudioPlayMode.BackgroundLoop)
    都會在背景一直播放
    參考:http://msdn.microsoft.com/zh-tw/library/w032hx3c(v=vs.90).aspx
    
    
    需要停止時
    My.Computer.Audio.Stop()
    收工,只吃wav檔 

2013年10月13日 星期日

華碩分享器,出現『此連接埠用於 Download Master』的解決方法...

最近搬家,朋友拿他以前的RT-N53 來當AP,
韌體是最新的 FW_RT_N53_3004374311.trx
早上更新完後發現要改密碼不能改,
一直跳  『此連接埠用於 Download Master』,
日期時間、密碼一直改不過來,後來才發現在同樣的頁面
有一個 從網際網路設定RT-N53 的選項,要改成『是』 ,然後隨便改port
就能存了。
啥鬼,我又不需要這個  用成『否』又一直跳  『此連接埠用於 Download Master』不給存。

2013年10月3日 星期四

Notepad++ 在php中使用 php 跟 html 註解方式

php的單行註解是Ctrl+Q 而區塊註解 ALT+SHIFT+Q 是 /*.....*/
但寫html的時候註解是<!--    -->  
以下教學是把/*......*/改成  <!-- ...........-->

xp的檔案目錄在%appdata%\Notepad++文件夾」內。
Win7 中是放在「C:\Users\user\AppData\Roaming\Notepad++」需改兩個地方
langs.xml、langs.model.xml 裡面
搜尋 php 大概在第一個搜尋就找的到了,
原先是
 <Language name="php" ext="php php3 phtml" commentLine="//" commentStart="/*" commentEnd="*/">
修改成   html的註解方式  請參考language name="html" 的註解方式

 <Language name="php" ext="php php3 phtml" commentLine="//" commentStart="&lt;!--" commentEnd="--&gt;">
重啟軟體後 即可用

byte 轉 string 的問題

今天寫vb.net的app時,遇到一個問題

TextBox1.Text = Environment.NewLine+ " >> " + mesg + TextBox1.Text
把資料印出來的時候,
Dim inStream(10024) As Byte
serverStream.Read(inStream, 0, CInt(clientSocket.ReceiveBufferSize))
Dim returndata As String = _
System.Text.Encoding.ASCII.GetString(inStream)

如果加上msg(returndata)螢幕會只剩下那個returndata的資料,先前的資料都會被洗掉
後來確定是因為byte轉string的時候會產生眾多的ch(0),導致資料被蓋掉
所以就先.......
用空白取代後,再去空白
returndata = Replace(returndata, Chr(0), "")
msg(Trim(returndata))

VB.net FOR 回圈

vb 的回圈有點不一樣,不小心卡在這卡了一段小時間
他的for 是 For i As Integer = 0 To sos_port.Length() - 1
注意是 TO...
For 計數變量 = 啟始值 To 終止值 [Step 步進值]
[敘述區塊]
[Continue For]
[Exit For]
Next

以往寫php 或 C 或asp.net 都試用 for i=0;i〈 來寫的,所以i會比目標值大,
但VB會跑到跟目標值一樣才停止,他的TO的意思應該是從0到N 

2013年8月22日 星期四

MS Chart 使用兩條線做線圖...Multiple line

'假如是第二次載入
If Page.IsPostBack Then
Chart1.Visible = True
Dim date_s, date_e, type As String
Dim conn = New SqlConnection
Dim cmd As SqlCommand
Dim dr As SqlDataReader
Dim dt As DataTable = New DataTable
Dim SqlString As String
date_s = TextBox1.Text
date_e = TextBox2.Text
type = DropDownList1.SelectedValue
'date_s = "2013-08-21 16:48:00.000"
'date_e = "2013-08-21 17:50:00.000"
'type = "Co2"
conn.ConnectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString() '使用web config
SqlString = "select * from environment_log " & _
" where CONVERT (VARCHAR(10), timestamp, 111) >='" + date_s & _
"' and CONVERT (VARCHAR(10), timestamp, 111) <= '" + date_e & _
"' and type='" + type + "' order by timestamp"
'Label1.Text = SqlString
cmd = New SqlCommand(SqlString, conn) '定義cmnd為SqlCommand指令
'comnd.ExecuteNonQuery() '執行
Try
conn.Open() '開啟連結
dr = cmd.ExecuteReader() '讀取
If dr.HasRows = True Then
'第一種datareader 塞入datatable,使用多個線圖仍須測試
dt.Load(dr)
''Use linq to datatable
'Dim search1 = From c In dt.AsEnumerable() _
'Where c.Field(Of String)("DriverID") = "temp1" _
'Select c
'Dim temp1 = search1.CopyToDataTable()
'Dim search2 = From c In dt.AsEnumerable() _
'Where c.Field(Of String)("DriverID") = "temp2" _
'Select c
'Dim temp2 = search2.CopyToDataTable()
'Chart1.DataSource = temp2
'Chart1.Series("Series1").XValueMember = "timestamp"
'Chart1.Series("Series1").YValueMembers = "value"
''Chart1.Series("Series2").XValueMember = "timestamp"
''Chart1.Series("Series2").YValueMembers = "value"
'第二種使用databindcrosstable
'Use DataBindCrossTable
Chart1.DataBindCrossTable(dt.Rows, "DriverID", "timestamp", "value", "")
'不使用下列方式,只會跑長條圖..
For Each cs As Series In Chart1.Series
cs.ChartType = SeriesChartType.Spline
'cs.IsValueShownAsLabel = True
Next
Chart1.DataBind()
End If
Catch ex As Exception
Response.Write(e.ToString())
Finally
If Not (dr Is Nothing) Then ' --關閉 DataReader
cmd.Cancel() '--自己補上的,原因在下面有講。
dr.Close()
End If
If (conn.State = ConnectionState.Open) Then ' --關閉 DB的連線
conn.Close()
End If
End Try

End If

2013年8月18日 星期日

AJAX Toolkit問題彙整


1.無法修改 Controls 集合,因為控制項包含程式碼區塊 (例如 <% ... %>)。



因為有使用master,所以在head裡面找是不是有<%..%>的語法



結果真的有...<script type="text/javascript" src='<%= ResolveClientUrl("~/Scripts/master.js") %>'></script>


把這段移到body裡面就好了。


2.compile 的時候出現,找不到 ScriptObjectBuilder.cs



把這個加到aspx 內


<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>



3.ajax元件沒作用
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
改成

<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" > </ajaxToolkit:ToolkitScriptManager>

2013年7月15日 星期一

RDLC 產生PDF 多出空白頁

近日在用報表的格式,轉PDF出來的時候總會有許多不知名的空白產生。
除了 邊界及 主體大小 需設定以外

再將 報表內的 ConsumeContainWhiteSpace 改為 True 

2013年5月8日 星期三

asp.net C# radio button changeChecked

一直使用Changecheck 要根據狀態改變他的值,
結果一直跑不過去,
最後發現......
因為  AutoPostBack="True"  沒有開.....
所以一直沒執行........
按.......卡了三天的原因竟然是這個..........

2013年2月6日 星期三

74HC595 重點提醒

2的0次方是最右邊的最低位數字(LSBFIRST),
2的7次方則是左邊的高位第八位數字(MSBFIRST)

MSBFIRST 表示 595 從左向右讀取二進制數;
LSBFIRST 則表示從右向左讀取。



shiftout(a,b,c,d);


a = 連接到595的數據輸入引腳(14號引腳)的數字輸出端口號。

b = 連接到595的時鐘端口引腳(11號引腳)的數字輸出端口號。

c 可以是 LSBFIRST 或者 MSBFIRST。MSBFIRST 表示 595 從左向右讀取二進制數;LSBFIRST 則表示從右向左讀取。

d = 實際要傳送給595用來表示二進制輸出端口狀態的數值 (0~255)。


綜合以上,個人得出的結論是,MSBFIRST及LSBFIRST只代表要從左邊開始讀二進位數值
或是從右邊開始讀二進位數值。
例如 85(十進位)換算成二進位為10101010
如果設定為MSBFIRST  則亮燈的順序 從左邊開始(10101010)
,因MSBFIRST是從左邊開始讀取二進位數,所以會先取1
如果設定為LSBFIRST   則亮燈的順序 從右邊開始(01010101)
,因LSBFIRST是從右邊開始讀取二進位數,所以會先取0
(1為亮燈0為暗)

如果串連兩顆74HC595移位暫存器,
同時下指令

    shiftOut(DataPin, ClockPin, MSBFIRST, 5);
    shiftOut(DataPin,ClockPin, MSBFIRST, 85);

則會發現 第一個亮的晶片是最遠的暫存器,
因此推斷當arduino丟一個8bit的資料給暫存器時,會先經由PIN 9輸出給較遠的暫存器,
當暫存器的資料滿時,再傳到原先的暫存器。
以上假設為將LatchPin拉回高電位

推斷是否正確,等明天再買一顆回來試試看。


2013年1月7日 星期一

Arduino Circuit board test


接法
1.正極
5v->circuit_board(+)->(+)resistors(C7)
2.訊號
digital(12)->D7
3.LED
(+)->E8
( -)->E9
4.負極(地線)
A9->circuit_board(-)->GND

CODE


void setup(){
  pinMode(12,OUTPUT);
}
void loop(){
  digitalWrite(12,HIGH);
  delay(1000);
  digitalWrite(12,LOW);
  delay(1000);
}

2013年1月3日 星期四

痞客邦搬家至blogger

因為一些小錯誤,導致我忘了我轉到blogger
最後歸咎原因發現是pixet沒有關閉導致,
加上裡面還有一些舊文章,拜了一下G神,
最後發現大貓共和國寫的軟體,Blogtrans
一開始在匯入的時候,發現怎麼blogger的文章一直沒出來,
明明提示匯入成功...
其實只要重新整理就好...
搞了一個大烏龍..orz
流程:
1.痞客邦(匯出mt檔)
2.開軟體,轉成xml,
記得將副檔名改成.xml
3.開blogger匯入,
會看到匯入多少篇文章,
4.記得按重新整理,出現。
(ps.我沒有勾自動發佈)

引用:http://blog.miaout17.net/2011/04/30/blogtrans-1-0-1-update/

2013年1月2日 星期三

arduino七段顯示器

參考網址:http://yehnan.blogspot.tw/2012/02/arduinoseven-segment-display.html

七段顯示器 腳位圖
 _
|_|
|_|.
由上到下順時鐘旋轉分別為
 A
F B
 G
E C
 D .

針腳
由左到右所對應的英文分別為
GF地AB
ED地C.

A=4
B=3
C=2
D=12
E=13
F=10
G=11
. = 1
本來是用for跑0-9,後來想想改用random跑比較爽一點XD

  #define NUM 8
#define t true  //not bright
#define f false  //bright
boolean data[10][NUM] = {
  {t, f, f, f, f, t, f, f}, // 0
  {t, f, f, t, t, t, t, t}, // 1
  {t, t, f, f, t, f, f, f}, // 2
  {t, f, f, f, t, f, f, t}, // 3
  {t, f, f, t, f, f, t, t}, // 4
  {t, f, t, f, f, f, f, t}, // 5
  {t, f, t, f, f, f, f, f}, // 6
  {t, f, f, f, t, t, t, t}, // 7
  {t, f, f, f, f, f, f, f}, // 8
  {t, f, f, f, f, f, f, t}, // 9
};
int pins[NUM]={1,2,3,4,10,11,12,13};
void setup(){
  for(int i=0;i<NUM;i++)
  {
    pinMode(pins[i],OUTPUT);
  }
}
void writeNumber(int n){
  for(int i = 0; i < NUM; i++){
    if (data[n][i]== t){
      digitalWrite(pins[i],HIGH);
    }
    else{
      digitalWrite(pins[i],LOW);
    }
    //digitalWrite(pins[i], data[n][i] == t ? HIGH : LOW);
    //analogWrite(pins[i],50);
  }
}

void loop(){
/*   for(int n = 0; n <= 9; n++){
    writeNumber(n);
}
*/
    unsigned int n=0;
    n=random(10);
    writeNumber(n);
    delay(1000);
  
/*  for(int i=0;i<NUM;i++){
    digitalWrite(pins[i],HIGH);
  }
  delay(1000);
  for(int i=0;i<NUM;i++){
    digitalWrite(pins[i],LOW);
  }
  delay(1000);
*/
}

Arduion 無法安裝驅動程式


今天剛拿到手的arduion,一開始插上去usb後就開始悲劇了...

按照眾多網站上面所寫,驅動程式指向  drivers\FTDI USB Drivers ,一整個悲劇,

找不到就是找不到,後來改指向drivers...shit  就找到了,剛忙了十幾分鐘是在忙啥鬼
 (╯‵□′)╯︵ ┴─┴