2009年9月30日 星期三

避免讀入excel資料變空白

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=EXCEL文件檔名;Extended Properties='Excel 8.0;HDR=YES;IMEX=1'

Text內預設文字...

<input id="Text1" onfocus="javascript:if( this.value=='請輸入搜尋字串...')this.value=''" onblur="javascript:if( this.value=='' )this.value='請輸入搜尋字串...'" value="請輸入搜尋字串..."  type="text"/>

2009年9月21日 星期一

SQL SERVER 日期轉換

取自~ http://blog.miniasp.com/post/2008/02/Use-CONVERT-function-to-deal-with-SQL-Server-Datetime.aspx
輸出格式:2008-02-27 00:25:13
SELECT CONVERT(char(19), getdate(), 120)

輸出格式:2008-02-27
SELECT CONVERT(char(10), getdate(), 20)

輸出格式:2008.02.27
SELECT CONVERT(char(10), getdate(), 102)

輸出格式:08.02.27
SELECT CONVERT(char(8), getdate(), 2)

輸出格式:2008/02/27
SELECT CONVERT(char(10), getdate(), 111)

輸出格式:08/02/27
SELECT CONVERT(char(8), getdate(), 11)

輸出格式:20080227
SELECT CONVERT(char(8), getdate(), 112)

輸出格式:080227
SELECT CONVERT(char(6), getdate(), 12)

window.showModalDialog範例~

window.showModalDialog

 
Mfg_Steel.aspx
< input id="Button2" onclick="test1();" value="加入工時" type="button" >
--------------------------------------------------------
<script language="javascript">
function test1( ){
var obj=document.getElementById("GridView2$ctl02$txtJSM1");
window.showModalDialog("Mfg_Steel_2.htm",obj,"dialogWidth=800px;dialogHeight=800px");
}
</script>
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
Mfg_Steel_2.htm
56<input id="Radio3" onclick="radiovalue2(value);" value="56" type="radio" name="SFB">
112<input id="Radio10" onclick="radiovalue3(value);" value="112" type="radio" name="SFD">
--------------------------------------------------------
<input id="Button1" onclick="sum1();" value="加總" type="button">
<input id="Button2" onclick="testb();" value="送出" type="button">
--------------------------------------------------------
<script language="javascript">
objtxt1 = document.getElementById("Text1") ;
objtxt2 = document.getElementById("Text2") ;
objtxt3 = document.getElementById("Text3") ;
function radiovalue2(value2){
sfb = value2;
objtxt2.value = sfb;
}
function radiovalue3(value3){
sfd = value3;
objtxt3.value = sfd;
}
function sum1( ){
objtxt1.value = parseInt(objtxt2.value) + parseInt(objtxt3.value)
}
function testb( ){
var objb= window.dialogArguments;
objb.value=objtxt1.value;
window.close( );
}
</script>

網路提供者都不接受指定的路徑

系統管理工具→服務→Workstation 啟動
系統管理工具→服務→Computer Browser 啟動
系統管理工具→服務→Routing and Remote Access 啟動

Usercontrol與Page傳值

Login_tmp1 : Usercontrol名稱
TextBox3 : Usercontrol內的元件
logintmp_chk : Page內宣告的TextBox
logintmp_chk = CType(Login_tmp1.FindControl("TextBox3"), TextBox)

網頁預設按Enter時...

為了不讓網頁按Enter時按到預設的Button
設定按Enter時按鍵頭"上"
就不會產生畫面的PostBack了

另外可用.net 2005 的DefaultButton設定要預設的Button

ModalPopupExtender


BackgroundCssClass="modalBackground"
加入這樣式才會有跳出的感覺
搞老半天...

Oracle 日期欄位轉字串的方法

TO_CHAR(, '')
範例:
SELECT TO_CHAR(b, 'YYYY/MM/DD') AS b FROM x;
Oracle 字串轉日期欄位的方法 ( Oracle 寫入日期的方法 )
TO_DATE(, '')
範例:
TO_DATE('2006/8/29', 'YYYY/MM/DD')

轉自
http://infolab.stanford.edu/~ullman/fcdb/oracle/or-time.html

Oracle 設定流水號

進入SQL-Plus後
--------------宣告concession
CREATE SEQUENCE concession_sequence
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
CACHE 10;
--------------使用
concession_sequence.nextval;
--------------刪除sequence
DROP SEQUENCE concession_sequence;

Oracle資料庫問題,無法從Client連到Server的Oracle Client

Client端電腦透過公司的Server端電腦連至SAP資料庫
怎麼樣都不行連(重裝Oracle Client也不行)
後來改了一下Server端Oracle的權限設定
在Oracle的安裝目錄下 C:\oracle\ora92
將ora92的權限中的Authenticated Users加入完全控制(預設只有讀取及執行、清單資料夾內容、讀取)
即可解決

.net 一般性問題,重新註冊 framework

系統上必須先有IIS再裝.net才不會出現問題
假使不小心移除IIS 則再註冊一次.net即可
%WinDir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i

跳出警告視窗~AJAX

Sys.WebForms.PageRequestManagerServerErrorException:An unknown error occurred while processing the request on the server. The status code returned from the server was :500
AJAX將錯誤隱藏住 要先移掉AJAX元件

伺服器應用程式無法使用 .net 2005

無法執行要求,因為無法建立 App-Domain。錯誤: 0x80070005 存取被拒。
加入NETWORK SERVICE的權限即可

WebChart

好用的統計圖工具~ http://www.carlosag.net/Tools/WebChart/Default.aspx 下載WebChart.dll後 到工具箱新增/移除項目 新增.NET Framework元件
Imports WebChart
Private Sub CreateChart()
'ChartControl1.YCustomStart = Session("ds_chart").Rows(0).Item(7) - 0.5 '定義Y軸的起始點
'ChartControl1.YCustomEnd = Session("ds_chart").Rows(0).Item(7) + 0.5 '定義Y軸的結束點
ChartControl1.ChartTitle.Text = "50筆最新資料" '定義Title名稱
Dim chart As LineChart = New LineChart
chart.Line.Color = Color.Green 'Line的顏色
chart.Legend = "值" '代表Line的名稱
Dim chart1 As LineChart = New LineChart
chart1.Line.Color = Color.Blue
chart1.Legend = "實測尺碼"
Dim chart2 As LineChart = New LineChart
chart2.Line.Color = Color.Red
chart2.Legend = "差值"
For Each row As DataRow In Session("ds_chart").Rows '讀Dateset的值
chart.Data.Add(New ChartPoint(row("值").ToString, CType(row("值"), Integer)))
chart1.Data.Add(New ChartPoint(row("實測尺碼").ToString, CType(row("實測尺碼"), Integer)))
chart2.Data.Add(New ChartPoint(row("差值").ToString, CType(row("差值"), Integer)))
Next
ChartControl1.Charts.Add(chart)
ChartControl1.Charts.Add(chart1)
ChartControl1.Charts.Add(chart2)
ChartControl1.RedrawChart()
End Sub

Google Chart API

Google所提供的一套API http://code.google.com/apis/chart/ 使用方式直接在網址後面接參數
Dim strLink As String = "http://chart.apis.google.com/chart?"
Dim strCht As String = "cht=lxy"
Dim strChs As String = "&chs=300x200"
Dim strChd As String = "&chd=t:" & "0,30,60,70,90,95,100" & "|" & Session("ds_temp")
Dim strChxt As String = "&chxt=x&chxl=0:|0|10|20|30|40|50|"
Response.Redirect(strLink & strCht & strChs & strChd & strChxt)

cht -- Chart type
chs -- Chart sizte
chd -- Chart data
chl -- Chart Label
chxt -- top x-axis
chxl -- the pipe character (|) is not required after the last parameter.

撈資料庫值顯示對照圖至表格

Dim sqlstr As String
Dim dr As SqlClient.SqlDataReader
sqlstr = "SELECT TDM_NAME FROM TN_C_TYPE"
Dim cmd As New SqlClient.SqlCommand(sqlstr, SqlConnection1)
Dim row As HtmlTableRow
Dim cell_Photo As HtmlTableCell
Dim cell_Text As HtmlTableCell
SqlConnection1.Open()
dr = cmd.ExecuteReader
While dr.Read
row = New HtmlTableRow
For i As Integer = 0 To dr.FieldCount - 1
cell_Text = New HtmlTableCell
cell_Photo = New HtmlTableCell
cell_Text.InnerText = dr.Item(i)
//dr.Item(0) ..資料庫第一欄 dr.Item(1) ..資料庫第二欄 cell_Photo.InnerHtml = " < img src='/PIC/Cutter_Pic/" & dr.Item(i) & ".jpg' align='center' onerror=this.style.display='none' src=''>" row.Cells.Add(cell_Text) row.Cells.Add(cell_Photo) Next Table1.Rows.Add(row) End While dr.Close() SqlConnection1.Close()

ASP.NET 編輯 excel 檔

Dim cn As New Data.OleDb.OleDbConnection
Dim da As Data.OleDb.OleDbDataAdapter
Dim dt As New DataTable
Dim sqlstr As String
Dim oComm As SqlCommand
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= " &  Server.MapPath("檔名.XLS") & "; Extended Properties=Excel 8.0;"
For i As Integer = 1 To 100    'excel內有100筆資料
cn.Open()
da = New OleDb.OleDbDataAdapter("select * from [Data$]", cn)  'Data=>"Booksheet"
da.Fill(dt)
sqlstr = sqlstr + "INSERT INTO SPC_Table (零件件號) VALUES (dt.Rows(i + 4).Item(1)"  'excel內每筆資料為Row
Dim ds As New DataSet
SqlConnection1.Open()
oComm = New SqlCommand(sqlstr, SqlConnection1)
oComm.ExecuteNonQuery()
SqlConnection1.Close()
cn.Close()
Next

Excel檔匯入Oracle

1. 將excel轉存為.csv
2. 建立.ctl檔
檔案內容----
load data
infile "c:\SPC_Table.csv"(資料檔名稱與路徑)
badfile "bad.log"
discardfile "discard.log"
into table SPC_TABLE(Oracle裡的Table)
fields terminated by ',' optionally enclosed by '"'(原始資料以,區格)
trailing nullcols (欄位內容)
( 零件件號
, OP
, 工令
, 日期
, 序號
, 圖號
, 值
, 操作人員
)
3. 在命令提示字元下> sqlldr userid=帳號/密碼 control=C:\SPC_Table.ctl

Javascript控制Html與Server端元件

//控制Html元件,Hidden_Btn為元件名稱
function Add( ){
if (confirm("是否確定要新增?")) {
document.getElementById("Hidden_Btn").click();
}
}
//控制Server端元件,New_Button為元件名稱
function Add( ){
if (confirm("是否確定要新增?")) {
return __doPostBack('New_Button','')
}
}

Javascript傳值

//Html內,傳變數Para_Link
if (confirm("是否確定要新增?")) {
location.href="Put_In_Storage_Cutter_Link.aspx?Para_Link=Add";
}
// 程式內 ,接收變數 Para_Link
Para_Link = Request("Para_Link")
If Para_Link = "Add" Then
Message_Label.Text = "javascript"
End If

Cursor用法 ~MS SQL

USE aeftool_Data
--定義一個cursor 來自指定資料表內容
DECLARE 測試用_Cursor Cursor FOR
SELECT CN_T_KEY1
FROM 測試用
--開啟cursor
OPEN 測試用_Cursor
--定義cursor裡要取出的物件
DECLARE @KEY VARCHAR(50)
DECLARE @COUNT INT
--進入cursor
Fetch NEXT FROM 測試用_Cursor INTO @KEY
--當陳述式失敗,或資料列超出結果集時停止迴圈
While (@@FETCH_STATUS <> -1)
BEGIN
SELECT @COUNT=COUNT(*)
FROM SMARTEAM.TN_LINK_KNIFE LINK
WHERE LINK.CN_T_KEY1 = @KEY
IF @COUNT>0
PRINT 'TEST'
--再到下個指標去
Fetch NEXT FROM 測試用_Cursor INTO @KEY
END
--關閉cursor
CLOSE 測試用_Cursor
--釋放cursor
DEALLOCATE 測試用_Cursor
GO