2012-01-31 8 views
0

datetime 값을 데이터 테이블에 삽입 한 다음 oledbdataadapter의 업데이트 (datatable) 메서드를 사용하여 데이터베이스에로드하려고합니다.하지만 계속해서 "조건 식에서 데이터 형식이 일치하지 않습니다. . " 오류. 테이블에 내 액세스 데이터 유형은 다음과 같습니다액세스 테이블에서 datetime 업데이트

ID Number 
Nombre_Proyecto Text 
Codigo_Ine_Proy Text 
Cliente text 
Fecha_Creacion Datetime (short date) 

액세스 간단한 날짜에 따라입니다 MM/DD/YYY, 느릅 나무는 내 날짜/toshortdatestring 방법에 맞는? 나는 적어도 그렇게 생각한다.

도움을 주시면 감사하겠습니다. 데이터 어댑터 FOT

삽입에서 OleDbCommand : 난 내 데이터 테이블에서의 DataRow를 만들

sql = "PARAMETERS [@Fecha_Creacion] datetime;INSERT Into [Proyectos] ([ID], [Nombre_Proyecto],[Codigo_Ine_Proy],[Cliente],[Fecha_Creacion]) Values (@ID,@Nombre_Proyecto,@Codigo_Ine_Proy,@Cliente,@Fecha_Creacion)"; 
    Comando = new OleDbCommand(sql, conn); 
    Comando.Parameters.Add("@Nombre_Proyecto", OleDbType.VarWChar, 500, "Nombre_Proyecto"); 
    Comando.Parameters.Add("@Codigo_Ine_Proy", OleDbType.VarWChar, 500, "Codigo_Ine_Proy"); 
    Comando.Parameters.Add("@Cliente", OleDbType.VarWChar, 500, "Cliente"); 
    Comando.Parameters.Add("@Fecha_Creacion", DbType.DateTime); 
    Comando.Parameters.Add("@ID", OleDbType.Integer, 10000, "ID"); 

부 : 여기 내 코드의

DataRow newRow = Tabla_Proyectos_BD_General.NewRow(); 
    Max_IDs["Proyectos"] += 1; 
    newRow["ID"] = Max_IDs["Proyectos"]; 
    newRow["Nombre_Proyecto"] = textBox2.Text; 
    newRow["Codigo_Ine_Proy"] = textBox1.Text; 
    newRow["Cliente"] = textBox3.Text; 
    string x = System.DateTime.Now.ToShortDateString(); 
    newRow["Fecha_Creacion"] = x; 
    Tabla_Proyectos_BD_General.Rows.Add(newRow); 

답변

0
string x = System.DateTime.Now.ToShortDateString(); 

그것은 문자열입니다, 날짜 시간이 아닙니다! 따라서 불일치.

newRow [ "Fecha_Creacion"] = System.DateTime.Now;

귀하의 매개 변수화 된 검색어는 귀하를 대신해 수행해야합니다. 당신이 형식을 shortdatestring 거기에 넣어 날짜를 표시 할 경우

(whate 지금까지 그 필요에 따라 다음 형식을 날짜 시간으로 그것을 얻을하고, 서식을 수행하는 PC에서입니다.

PS 당신이 원하는 경우 날짜를 문자열로 데이터베이스에 전달하려면 yyyy-MM-dd 또는 yyyyMMdd 형식을 사용하고 유니버설 및 모호하지 않은 날짜 형식은 대기중인 버그 일 뿐이고 수행하지 않는 한 절대 수행하지 않습니다.

팁 날짜를 출력 할 때 문자열을 일부 형식으로 변환하는 것이 마지막 작업입니다. 입력 할 때 문자열에서 datetime으로 변환하는 것이 가장 먼저해야 할 일입니다

코멘트 간단한 솔루션 후 편집

Comando.Parameters.Add ("@의 Fecha_Creacion", DbType.DateTime, System.DateTime.Now)이다;

+0

필자는 이렇게 할 때 예외가 발생하지만 이유는 알지 못합니다. '@Fecha_Creacion'매개 변수의 데이터 형식이 잘못되었습니다. – user1181589

+0

매개 변수에서 dbtype.datetime을 변경했지만 성공하지 못했습니다. – user1181589

+0

op에서 수수께끼를내는 주석을 수정 한 후 편집 됨 –

0

당신은 당신이 액세스의에서 참조하면 "형식의 날짜가"

newRow["Fecha_Creacion"] = System.DateTime.Now; 

사용해야합니다. OleDB를 통해 상호 작용할 때는 서식이 지정된 문자열이 아닌 DateTime을 사용해야합니다.