2012-04-10 3 views
1

그래서 Access 데이터베이스에서 DataGridView로만 값을 가져 오는 간단한 데이터베이스 판독기를 만듭니다. 내가 의미하는 바를 알고 있다면 DataSource를 얻기 위해 내장 도움말에 연결했다. 그리고 모든 것이 잘되지만 "값"열에 1172,44를 쓰면 117244로 저장됩니다. 따라서 응용 프로그램에서 열면 저장된 값이므로 117244가됩니다.Access 데이터베이스에 double 값 저장 C#

액세스 및 C# 데이터 집합에서 fieldsize 속성은 double로 설정됩니다. 나는 십진법으로 시도했지만 단지 그 원인을 찾을 수없는 오류를 준다. 그것이 쉼표가 아닌 ","으로 읽는 것이 아니라는 것을 나에게 보여줍니다. " 이는 대개 천 단위 구분 기호로 사용하고 쉼표없이 번호를 제거합니다. 내가 어떻게 고칠 수 있는지 아는 사람? 여기에 필요한 코드를 얻을 수 있습니다.

감사합니다. Bruno Charters. (=

답변

1

데이터 집합에 저장된 double 값을 culture 독립적 (invariant)으로 설정하고 그룹 및 소수 구분 기호의 표시를 제어 할 수 있습니다.이 작업을 수행하는 한 가지 방법은 CultureInfo 형식 공급자를 사용하여 입력을 구문 분석하는 것입니다 . 아래 코드는 1172.44d

var culture = (CultureInfo) CultureInfo.InvariantCulture.Clone(); 
culture.NumberFormat.NumberDecimalSeparator = ","; 
culture.NumberFormat.NumberGroupSeparator = "."; 
var a = double.Parse("1172,44", culture); 

Console.WriteLine(a); //outputs 1172.44 
"1172,44"의 전환을 보여
+0

응용 프로그램을 실행하기 전에 culture 정보를 설정하거나로드 할 때 구문 분석 할 필요가 없도록 설정할 수 있습니까? 아, 그리고 btw, 나는 C# Windows 양식 모드를 사용하고 있습니다. (: 그래서 당신이 쓴 코드 중 일부를 정말로 이해할 수 없다. 감사합니다! –

+0

'Console.WriteLine' 코드는 LinqPad를 통해 코드를 실행할 때 결과를 쉽게 테스트 할뿐입니다. 또한 CurrentThread.CurrentCulture = culture' 위에서 정의한 문화권을 사용하지만이 방법이 효과가 있을지 확신하지 못합니다. – Matt

+0

분명히 "CurrentThread.CurrentCulture = culture"를 인식하지 못합니다. 어떤 특정 라이브러리를 추가하려면? 내가 수색하고 시스템을 추가 끝냈습니다 .Globalization 한 있지만 충분하지 않을 것 같습니다. 다시 한 번 도와 주셔서 감사 : ( –

0

그룹 분리 아마 올로 쉼표 해석되고 있음을 당신의 추측. 당신은 프로세스의 CurrentCulture 및 CurrentUICulture을 다시 한 번 확인 할 수 있으며, 가능하면 컴퓨터의 국가 별 설정과 Access 데이터베이스의 형식 속성이 설정되어있는 경우 .

How to: Customize Data Formatting in the Windows Forms DataGridView Control을 반드시 읽어야합니다. 시스템은 다소 복잡하지만 적절한 문화권 설정으로는 불가능한 경우 UI에 특정 형식을 적용 할 수있는 유연성을 제공해야합니다.

+0

"마스크"를 만들려고했습니다. 그리고 그것은 나에게 같은 에러를 주는데 1172,44에서 117244로 변환된다. Datagridview column에 값을 입력 할 때 이벤트 핸들러를 생성하는 것이 가능하다. 마찬가지로, 내 게시물에 위의 답변에서 매트의 코드로 값을 파싱, 내가 때 "값"열 datagridview 입력하십시오. 다시 감사합니다 (: –

관련 문제