0

글쎄, 나는 지금 그것에 밟았다. Access vba에서 C#으로 프로그램을 변환하여 독립적으로 실행할 수 있습니다. (다른 이야기입니다 ...) 프로그램은 Excel 파일을 읽고 각 행과 열의 유효성을 검사하여 데이터가 유효한지 (숫자 등) 다양한 데이터 필드를 조회하여 SQL Server에서 트랜잭션 테이블을 만듭니다. 트랜잭션 테이블은 결코 다시 검증되지 않으므로 첫 번째 시도에서 정확해야합니다.SQL Server에서 데이터를 처리하는 가장 좋은 방법은 무엇입니까?

절차 언어에 익숙하지만 (T-SQL에 대한 지식이 있지만) (VS2010) "LINQ to SQL"또는 "Entity Data Model"중 하나를 사용해야 나타납니다. SQL 서버 (2005)의 데이터 역사적으로 DAO 또는 ADO 레코드 세트를 사용했습니다. 한 번에 여러 열을 가져와야하지만, 전체적으로는 테이블을 업데이트하지는 않습니다. SQL Server 저장 프로 시저 (아마도 ADO?)를 사용하여 업데이트 할 수 있습니다.

Windows Forms를 사용하여 작업을 시작했지만 완료하기 전에 콘솔 응용 프로그램으로 전환 할 가능성이 있습니다.

당신은 무엇을 추천하십니까? 내 책 (C# 4.0 Griffiths, Adams 및 Liberty)은 Entity Data Model에 대해 주로 이야기하고 있습니다. 그러나 나는 SQL Server (2005)를 독점적으로 사용하고 있기 때문에 "Linq to SQL"이 더 적절하지 않습니까? 시작을 돕기위한 참고 자료가 있습니까? 여기 예제는 내가 사용하는 (VBA에서 ...) "방법"의 지금은 내 첫 번째 시도를 위해 사용하고 꽤 독립의 : u는 u는 프로그램을 다시 작성 하시겠습니까

Function ValidateOverride(LaborRateID As Variant) As Long 
If IsNull(LaborRateID) = True Or IsNumeric(LaborRateID) = False Then 
    ValidateOverride = 0 
    Exit Function 
End If 

Dim rstOverrideLaborRates As DAO.Recordset2 
Set rstOverrideLaborRates = CurrentDb.OpenRecordset("SELECT * FROM tblStaffAugLaborRates WHERE ID=" & LaborRateID, dbOpenDynaset, dbSeeChanges + dbFailOnError) 
If rstOverrideLaborRates.EOF Then 
    HandleMessages "Row Rejected -- Invalid Override Labor Rate" 
    ValidateOverride = 0 
Else 
    ValidateOverride = LaborRateID 
    If (dtCurrentWorkDate < rstOverrideLaborRates!EffectiveDate) Or (dtCurrentWorkDate > rstOverrideLaborRates!ExpirationDate) Then 
     HandleMessages "Row Rejected -- Override Labor Rate is not within its valid dates" 
     ValidateOverride = 0 
    End If 
    If rstOverrideLaborRates!VendorID <> lngCurrentVendorID Then 
     HandleMessages "Row Rejected -- Override Labor Rate is not valid for this vendor" 
     ValidateOverride = 0 
    End If 
End If 
rstOverrideLaborRates.Close 
Set rstOverrideLaborRates = Nothing 

End Function 
+1

제목 앞에 "C#"을 붙이지 마십시오. 그것이 바로 태그가있는 것입니다. –

+1

LINQ to SQL과 Entity Framework는 모두 SQL Server에서 작동하며 Microsoft는 최근 LINQ보다 EF에 더 많은 영향을 미쳤습니다. 기본적으로 LINQ에 대한 책으로 할 수있는 것처럼 들리지만 ... –

+0

좋아요, 그런 식으로 접두사를 붙이지 않겠습니다. 나는 태그가없는 forumns에 익숙하다. 조언 해주셔서 감사합니다. –

답변

0

있습니까? 엑셀을 파싱하는 것 이외에 무엇이 있습니까? 나는 SSIS을 사용하기를 권하고 싶습니다. 몇 가지 가져 오기/내보내기 루틴과 SSIS를 사용하는 변환을 작성했습니다. 은 극단이이며, 그들은 improving it입니다. 정말 좋습니다!

나는 필요 없다고 생각하지만, GUI에 대한 필요성이 있다면 u SSIS 패키지를 시작하고 프로세스에서 무슨 일이 일어나고 있는지 알려줄 수 있습니다.

PS : 로깅이 상자

+0

SSIS에 연결되었습니다. 나는 문제를 만났다. 인증은 때로는 문제가되었습니다. Excel 통합 문서는 SP ....에 있습니다. 그렇다면 .xlsx를 실제로 읽는 방법을 기억하지 못했지만 제대로 작동하지 못하는 열 오류가있었습니다. 일부 열은 숫자로 나타나지만 열거되지는 않으며 그 반대도 마찬가지라는 것을 기억하십시오. 엑셀은 매우 약한 타입의 시스템이므로 가정을하고 이에 따라 변수를 전달합니다. 너무 쉽게 포기하고 있습니까? –

+0

네, 너무 쉽게 포기했습니다. Excel 연결 관리자 내에서 모든 열을 문자열로 구성하고 나중에 값을 변환 할 수 있습니다. Btw 내가 직접 EF dbcontext를 사용하고 있지만이 시나리오에서는 SSIS를 선택합니다. 어쩌면이 질문을 SSIS 태그가있는 다른 형식으로 물어볼 수 있습니까? – rfcdejong

1

사용 엔티티 프레임 워크에서 구현되고, 최신 패치는 가능한했다. 내가 일하는 곳이 더 일반적이기 때문에 nhibernate를 사용합니다. 질문이 1, 2 년 전에 나온다면, 엔티티 프레임 워크를 권하고 싶지는 않지만 요즘은 실행 가능한 옵션입니다. 그것은 정말로 주관적이며, 당신을 위해 그것을 할 것이며, 그것을 시도 할 것이라고 생각했습니다. 실제로 그것보다 더 많은 것은 아닙니다.

+0

나는 이것을 발견했다 : [link] http://msdn.microsoft.com/en-us/data/ff191186.aspx, 나는 그것을보고있다. 지금까지 프레임 워크를 만들 수 있습니다. 자, 사용할 수 ("소비") .... 계속 지켜봐 주시기 바랍니다 ... –

관련 문제