Ինչպես զանգահարել ա SQL Server Պահված կարգը Excel VBA- ից

Կիսվել հիմա ՝

Սերվերի վերաբերյալ տվյալները կարող են փոփոխվել `ուսումնասիրելով գրառումները« հաճախորդի կողմից »Excel VBA- ում, փոխելով դրանք ըստ անհրաժեշտության և պահպանելով դրանք սերվերում:
Դա անելու ավելի արդյունավետ միջոց, մասնավորապես, եթե տվյալների բազան գտնվում է հեռավոր վայրում և այնտեղ մեծ քանակությամբ երթևեկություն է ներգրավված, «սերվերի կողմից» աշխատանքը կատարելն է: Այս վարժությունը պահանջում է Excel- ի պահեստավորված ընթացակարգ ՝ աշխատակիցներին դասակարգելու տարիքային տիրույթների համաձայն `ըստ նրանց ծննդյան ամսաթվերի (այսինքն` 18-25 տարի, 26-35 տարեկան և այլն) `առանց սերվերի և Excel- ի միջև տվյալների առատ փոխանակման:

Այս հոդվածը ենթադրում է, որ ընթերցողը ցուցադրում է erրագրավորողի ժապավենը և ծանոթ է VBA խմբագրին: Եթե ​​ոչ, խնդրում ենք Google- ի «Excel Developer Tab» կամ «Excel Code Window»:

Theորավարժությունների երեք տարր կա.

  • Տվյալների աղյուսակ tbl Աշխատակազմ տվյալների շտեմարանի շրջանակներում Թեստային;
  • Պահեստավորված ընթացակարգ SpageRange;
  • Excel xlsm, որը մենք կկոչենք xlsm, Excel նիշքի նմուշը կարելի է գտնել այստեղ

Տվյալների աղյուսակ

Ստեղծեք տվյալների շտեմարան SQL Server անվանել Ապստամբ.

Սեղանի համար կազմեք հետևյալ սյունակները 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 Lohan 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 Hoover S 2002/12/08 F
2017/05/25 9 Watson 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

Պահված ընթացակարգը կպահպանվի տվյալների բազայում «mրագրավորվողության» տակ:

Excel vba

Մնում է միայն Excel- ից զանգահարել պահված ընթացակարգը ՝ տրամադրելով այն Աշխատավարձի ամսաթիվ «2017/05/25» պարամետրը: Դուք կնշեք, որ ես պարզապես մուտքագրել եմ տվյալներ  Աշխատավարձի ամսաթիվ որպես լար և ոչ թե տարատեսակ ամսաթվերի ձևաչափերով գոտեմարտ: Բավականին պարզ է, որ տողը փոխի ամսաթվի, օգտագործելով Փոխակերպել գործառույթը, եթե Աշխատավարձի ամսաթիվ պետք է օգտագործվի թվաբանական նպատակներով:

Ստեղծեք նոր աշխատանքային գրքույկ: Բացեք VBA կոդի պատուհանը և տեղադրեք մոդուլ:

Կոդի պատուհանի Գործիքներ ընտրացանկից հիշատակեք համապատասխանը Active X 2.nn գրադարան տվյալների օբյեկտների օգտագործումը հեշտացնելու համար:Տվյալների օբյեկտների օգտագործումը հեշտացնելու համար դիմեք համապատասխան Active X 2.nn գրադարանին

Կպցրեք հետևյալ կոդը օրենսգրքի պատուհանում: Ակտիվացումից հետո սա միանալու է 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-ը հաճախ չի կարողանում վերականգնել վնասված աշխատանքային գրքերը. նման դեպքում աշխատանքային գրքի ստեղծումից ի վեր կատարված ողջ աշխատանքը կարող է անդառնալիորեն կորել, եթե դուք չունեք գործիք, որը կարող է... վերականգնել Excel- ը xlsx կամ xlsm ֆայլեր:

Հեղինակի ներածություն.

Ֆելիքս Հուքերը տվյալների վերականգման փորձագետ է DataNumen, Inc., որը տվյալների վերականգման տեխնոլոգիաների համաշխարհային առաջատարն է, այդ թվում rar-ի վերանորոգում և sql վերականգնման ծրագրային արտադրանքները: Լրացուցիչ տեղեկությունների համար այցելեք www.datanumen.com

Կիսվել հիմա ՝

Comments փակվում են: