2010-09-17 73 views
0

我現在遇到的問題是日期正在作爲30/12/1899輸入到SQL數據庫中。我正在使用Access 2003作爲數據庫,並且無法想到發生這種情況的任何潛在原因!在SQL數據庫中輸入日期

window.status='Loading contingency scripts - please wait...'; 
audit('Loading contingency scripts'); 
var conting={ i:0 

,start:function(){ 
    window.status='Loading form - please wait...'; 
    var t=''; 
    t+='<form name="frm_conting" id="frm_conting" onsubmit="return false;">'; 
    t+='<table width="100%" cellspacing="1" cellpadding="0">'; 
    t+='<tr><td>Date (DD/MM/YY):</td><td><input type="text" size="8" value="'+current_date+'" id="date"></td></tr>'; 

t+='<tr><td>Time Started:</td><td><select id="timefrom"><option></option>'; 
    for(h=8;h<23;h++){ 
     for(m=0;m<46;m=m+15){ t+='<option value='+nb[h]+':'+nb[m]+'>'+nb[h]+':'+nb[m]+'</option>'; }; 
    }; 
t+='</select></td></tr>'; 

t+='<tr><td>Time Finished:</td><td><select id="timeto"><option></option>'; 
    for(h=8;h<23;h++){ 
    for(m=0;m<46;m=m+15){ t+='<option value='+nb[h]+':'+nb[m]+'>'+nb[h]+':'+nb[m]+'</option>'; }; 
    }; 

    t+='</select><tr><td>Extension #:</td><td><input type="text" size="5" value="'+my.extension+'" id="staffid"></td></tr>'; 
t+='<tr><td>Desk ID:</td><td><input type="text" size="5" value='+my.deskid+' id="desk"></td></tr>'; 
    t+='<tr><td>Number of calls:</td><td><input type="text" size="5" id="calls"></td></tr>'; 
    t+='<tr><td>Avid ID:</td><td><input type="text" size="5" id="avid"></td></tr>'; 
    t+='<tr><td><input type="button" value="Submit" onClick="conting.save()"></td>';  
    t+='</table>'; 
    t+='</form>'; 

    div_form.innerHTML=t;  
    window.resizeTo(400,385); 
    window.status=''; 
    } 

,save:function(){ 
var conting_date=frm_conting.date.value; 
if(!isdate(conting_date)){alert("You have entered an incorrect date.");return false;}; 

var conting_timefrom=frm_conting.timefrom.value; 
var conting_timeto=frm_conting.timeto.value; 
if(conting_timefrom==''||conting_timeto==''){alert("You need to enter a starting & finishing time.");return false;}; 
if(conting_timefrom>conting_timeto){alert("The time you have entered is after the finish time.");return false;}; 

var conting_staffid=frm_conting.staffid.value; 
if(conting_staffid.length!=5) { alert("You have entered an incorrect extension number.");return false;}; 

var conting_desk=frm_conting.desk.value; 
if(conting_desk.length!=5) { alert("You have entered an incorrect desk ID.");return false;}; 

var conting_calls=frm_conting.calls.value; 
if(isNaN(conting_calls)){alert("You have not entered amount of calls.");return false;}; 

var conting_avid=frm_conting.avid.value; 
if(isNaN(conting_avid)){alert("You have entered an incorrect avid ID.");return false;}; 
if(conting_avid.length!=5) { alert("You have entered an incorrect avid ID.");return false;}; 

conn.open(db["contingency"]); 
rs.open("SELECT MAX(prac_id) FROM practice",conn); 
var prac_id=rs.fields(0).value+1; 
var prac_staffid=frm_conting.staffid.value; 
var prac_date=frm_conting.date.value; 
var prac_timefrom=frm_conting.timefrom.value; 
var prac_timeto=frm_conting.timeto.value; 
var prac_calls=frm_conting.calls.value; 
var prac_avid=frm_conting.avid.value; 
rs.close(); 
var q="INSERT INTO practice (prac_id, prac_staffid, prac_date, prac_timefrom, prac_timeto, prac_extension, prac_desk, prac_calls, prac_avid) VALUES ("+prac_id+","+my.id+", "+prac_date+", '"+prac_timefrom+"', '"+prac_timeto+"', '"+my.extension+"', '"+my.deskid+"', '"+prac_calls+"', '"+prac_avid+"')"; 

rs.open(q,conn); 
conn.close(); 
    alert("Your contingency times were successfully added."); 
    window.status=''; 
    conting.start(); 
} 

}; 
window.status=''; 
+1

你可以「console.log(q)」並編輯問題以包含輸出嗎?我想查看正在運行的確切INSERT查詢。 – gmoore 2010-09-17 14:39:30

+0

我認爲訪問數據庫模式的細節也很有用。 – Murph 2010-09-17 14:53:32

回答

1

30/12/1899是Access數據庫的「零」日期。

最可能是prac_date變量不包含正確的日期時間值。它缺失,不完整或格式錯誤。在執行查詢之前提醒或記錄它以查看進入查詢的實際值並驗證其正確性。

您可能想看看MSDN forum中討論的類似主題。

1

我能想到的是 - 輸入的文本是空的/沒有回收妥善所謂同化爲0,這是JavaScript或數據庫 的T0時間 - 輸入的文本是31/12/99,但此格式一年中有2位數字映射到數據庫中的1899年。如果是這種情況,應該在插入查詢中明確地格式化日期。

+0

我剛剛查詢了日期,並將它作爲正確的數據查找到,它只是不會拉入數據庫 - craigg 0秒前編輯 – craigg 2010-09-17 15:01:52

+0

Craigg,您在INSERT語句中使用「+ prac_date +」。你有沒有試過#「+ prac_date +」#? – Saul 2010-09-17 15:29:29