전화하는 방법 SQL Server Excel VBA의 저장 프로 시저

지금 공유 :

서버의 데이터는 Excel VBA에서 '클라이언트 쪽'레코드를 검사하고 필요에 따라 변경 한 다음 다시 서버에 저장하여 수정할 수 있습니다.
특히 데이터베이스가 원격 위치에 있고 많은 트래픽이 관련된 경우이를 수행하는보다 효율적인 방법은 '서버 측'작업을 수행하는 것입니다. 이 연습에서는 Excel의 저장 프로 시저를 호출하여 서버와 Excel간에 많은 데이터를 교환하지 않고 직원을 생년월일 (예 : 18-25 세, 26-35 세 등)에 따라 연령 범위로 분류합니다.

이 문서에서는 독자에게 개발자 리본이 표시되고 VBA 편집기에 익숙하다고 가정합니다. 그렇지 않은 경우 Google "Excel 개발자 탭"또는 "Excel 코드 창"을 사용하십시오.

연습에는 세 가지 요소가 있습니다.

  • 데이터 테이블 tbl직원 데이터베이스 내 테스트DB;
  • 저장 프로 시저 기간 범위;
  • Excel xlsm, 우리는 xlsm. 샘플 Excel 파일을 찾을 수 있습니다. 여기에서 확인하세요

데이터 표

에서 데이터베이스 만들기 SQL Server 라는 DB테스트.

테이블에 대해 다음 열 설정 tbl직원.

테이블에 대한 열 설정 tblStaff

다음을 테이블에 복사하십시오.

2017/05/25 1 갈색 J 1946/12/02 M
2017/05/25 2 스마트 한 A 1976/03/26 F
2017/05/25 3 크루즈 T 1962/07/03 M
2017/05/25 4 로한 L 1986/07/02 F
2017/05/25 5 프레드릭센 F 1964/03/15 M
2017/05/25 6 스나이더 L 1968/07/05 F
2017/05/25 7 립니키 J 1983/11/25 M
2017/05/25 8 후버 청소기로 청소하다 S 2002/12/08 F
2017/05/25 9 왓슨 E 1990/04/15 F

저장 프로 시저.

TestDB에 대해이 스크립트를 실행하여 저장 프로 시저를 만듭니다.

USE [TestDB]
GO
/****** Object: StoredProcedure [dbo].[spAgeRange] Script Date: 2017/05/10 12:16:28 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[spAgeRange]

    @PayrollDate varchar(50)
 
AS
BEGIN

    SET NOCOUNT ON;
    UPDATE tblStaff SET Age = CONVERT(int, DATEDIFF(day, DateOfBirth, GETDATE()) / 365.25, 0) 
    WHERE tblStaff.PayrollDate = @PayrollDate
 
    Update tblStaff set AgeRange = '>56' where Age >= 56 and PayrollDate = @PayrollDate

    Update tblStaff set AgeRange = '46 to 55' where Age >= 46 and Age < 56 and PayrollDate = PayrollDate 
 
    Update tblStaff set AgeRange = '39 to 45' where Age >= 39 and Age < 46 and PayrollDate = @PayrollDate 
 
    Update tblStaff set AgeRange = '31 to 38' where Age >= 30 and Age < 39 and PayrollDate = @PayrollDate 
 
    Update tblStaff set AgeRange = '25 to 30' where Age >= 25 and Age < 30 and PayrollDate = @PayrollDate 
 
    Update tblStaff set AgeRange = '18 to 24' where Age >= 18 and Age < 25 and PayrollDate = @PayrollDate 
 
    Update tblStaff set AgeRange = '<18' where Age < 18 and PayrollDate = @PayrollDate

END

저장 프로시 저는 데이터베이스의 "Programmability"아래에 저장됩니다.

Excel VBA

남은 것은 Excel에서 저장 프로 시저를 호출하는 것입니다. 급여일 "2017/05/25"의 매개 변수. 내가 단순히 데이터를 입력했다는 것을 알 수 있습니다.  급여일 다양한 날짜 형식과 씨름하기보다는 문자열로. 다음을 사용하여 문자열을 날짜로 변환하는 것은 간단합니다. 개 심자 기능 급여일 산술 목적으로 사용됩니다.

새 통합 문서를 만듭니다. VBA 코드 창을 열고 모듈을 삽입하십시오.

코드 창의 도구 메뉴에서 적절한 활성 X 2.nn library 데이터 개체의 사용을 용이하게합니다.적절한 Active X 2.nn Lib 참조rary 데이터 객체 사용을 촉진하기 위해

다음 코드를 코드 창에 붙여 넣습니다. 활성화되면 다음에 연결됩니다. SQL Server, ConnectDatabase 하위 프로 시저에 따라

'All "public" in case the code is spread over several modules.
Public connDB As New ADODB.Connection
Public rs As New ADODB.Recordset
Public strSQL As String
Public strConnectionstring As String
Public strServer As String
Public strDBase As String
Public strUser As String
Public strPwd As String
Public PayrollDate As String

Sub WriteStoredProcedure()
     PayrollDate = "2017/05/25"
     Call ConnectDatabase
     On Error GoTo errSP
     strSQL = "EXEC spAgeRange '" & PayrollDate & "'"
     connDB.Execute (strSQL)
     Exit Sub
errSP:
MsgBox Err.Description
End Sub

Sub ConnectDatabase()
     If connDB.State = 1 Then connDB.Close
     On Error GoTo ErrConnect
     strServer = "SERVERNAME" ‘The name or IP Address of the SQL Server
     strDBase = "TestDB"
     strUser = "" 'leave this blank for Windows authentication
     strPwd = ""

     If strPwd > "" Then
         strConnectionstring = "DRIVER={SQL Server};Server=" & strServer & ";Database=" & strDBase & ";Uid=" & strUser & ";Pwd=" & strPwd & ";Connection Timeout=30;"
     Else
         strConnectionstring = "DRIVER={SQL Server};SERVER=" & strServer & ";Trusted_Connection=yes;DATABASE=" &    strDBase 'Windows authentication
     End If
     connDB.ConnectionTimeout = 30
     connDB.Open strConnectionstring
Exit Sub
ErrConnect:
     MsgBox Err.Description
End Sub

Sheet1에 버튼을 추가하고 하위 절차“쓰기 저장 프로시저"

결과

버튼을 누른 다음 연령 및 연령 범위로 업데이트해야하는 tblStaff를 확인합니다. 처리는 서버 측에서 수행되었습니다.

손상된 통합 문서 복구

Excel이 충돌하면 통합 문서의 유일한 복사본을 가져갈 수 있습니다. 대부분의 경우 Excel에서 손상된 통합 문서를 복구하지 못하는 경우가 많습니다. 이 경우 통합 문서 생성 이후 수행 된 모든 작업이 취소 될 수 있습니다.cab리 엘ost, 도구가없는 경우 Excel 수리 xlsx 또는 xlsm 파일.

저자 소개 :

Felix Hooker는 데이터 복구 전문가입니다. DataNumen, Inc.는 다음과 같은 데이터 복구 기술 분야의 세계적 리더입니다. rar 수리 및 SQL 복구 소프트웨어 제품. 자세한 내용은 WWW.datanumen.COM

지금 공유 :

댓글이 닫혀있다.