2010-09-17 9 views
0

Le problème que je rencontre actuellement est que la date est entrée dans la base de données SQL au 30/12/1899. J'utilise Access 2003 pour la base de données et ne peux pas penser à une raison potentielle pour laquelle cela se produit!Saisie de dates dans une base de données 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

Pouvez-vous "console.log (q)" et modifier la question pour inclure la sortie? Je veux voir la requête INSERT exacte qui est en cours d'exécution. – gmoore

+0

Je pense que les détails du schéma db d'accès seraient utiles aussi. – Murph

Répondre

1

30/12/1899 est la date «zéro» de la base de données Access.

Il est très probable que la variable prac_date ne contienne pas la bonne valeur de date/heure. Soit il est manquant, incomplet ou mal formé. Alertez ou connectez-vous avant d'exécuter la requête pour voir la valeur réelle entrer dans la requête et vérifier son exactitude.

Vous voudrez peut-être jeter un oeil à un sujet similaire discuté dans MSDN forum.

1

Ce que je peux penser est - le texte saisi est vide/non récupérés proprement assimilé à 0 qui est le temps T0 soit javascript ou la base de données - le texte saisi est 31/12/99, mais cette mise en forme avec 2 chiffres pour l'année est mappé à 1899 dans la base de données. Si tel est le cas, vous devez explicitement formater votre date dans votre requête d'insertion.

+0

Je viens de demander la date, et elle apparaît comme la bonne qu'elle ne tirera pas dans la base de données - craigg il y a 0 secondes edit – craigg

+0

Craigg, vous utilisez "+ prac_date +" dans l'instruction INSERT. Avez-vous essayé # "+ prac_date +" #? – Saul

Questions connexes