কিভাবে কল করতে হবে SQL Server এক্সেল ভিবিএ থেকে সঞ্চিত পদ্ধতি

এখন শেয়ার:

এক্সেল ভিবিএ-র রেকর্ডগুলি 'ক্লায়েন্ট-সাইড' পরীক্ষা করে, প্রয়োজনীয় হিসাবে তাদের পরিবর্তন করে এবং তাদের সার্ভারে ফিরিয়ে দিয়ে সার্ভারের ডেটা সংশোধন করা যেতে পারে।
এটি করার আরও কার্যকর উপায়, বিশেষত যদি ডাটাবেস কোনও প্রত্যন্ত স্থানে থাকে এবং প্রচুর ট্র্যাফিক জড়িত থাকে তবে কাজটি 'সার্ভার-সাইড' করা do এই অনুশীলনটি সার্ভার এবং এক্সেলের মধ্যে প্রচুর পরিমাণে ডেটা বিনিময় না করে কর্মীদের তাদের জন্মের তারিখ অনুসারে (যেমন 18-25 বছর, 26-35 বছর, ইত্যাদি) বয়সের শ্রেণিতে শ্রেণিবদ্ধ করতে এক্সেল থেকে একটি সঞ্চিত প্রক্রিয়া কল করে।

এই নিবন্ধটি ধরে নিয়েছে পাঠকের বিকাশকারী ফিতাটি প্রদর্শিত হয়েছে এবং এটি ভিবিএ সম্পাদকের সাথে পরিচিত। যদি তা না হয় তবে দয়া করে গুগল "এক্সেল বিকাশকারী ট্যাব" বা "এক্সেল কোড উইন্ডো"।

অনুশীলনের তিনটি উপাদান রয়েছে:

  • একটি ডাটা টেবিল tblStaff একটি ডাটাবেসের মধ্যে টেস্টডিবি;
  • একটি সঞ্চিত পদ্ধতি spAgeRange;
  • একটি এক্সেল এক্সএলএসএম, যা আমরা কল করব xlsm। একটি নমুনা এক্সেল ফাইল পাওয়া যাবে এখানে

ডাটা টেবিল

একটি ডাটাবেস তৈরি করুন SQL Server নামক ডিবিস্টেস্ট.

একটি টেবিলের জন্য নিম্নলিখিত কলামগুলি সেট আপ করুন tblStaff.

একটি সারণির জন্য কলামগুলি সেট করুন 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

সংরক্ষিত নীতিমালা.

সঞ্চিত পদ্ধতি তৈরি করতে এই স্ক্রিপ্টটি টেস্টডিবিয়ের বিরুদ্ধে চালান:

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

সঞ্চিত পদ্ধতিটি ডেটাবেসে "প্রোগ্রামযোগ্যতা" এর অধীনে সংরক্ষণ করা হবে।

এক্সেল ভিবিএ

অবশিষ্ট সমস্তই এক্সেল থেকে সঞ্চিত প্রক্রিয়া কল করা, সরবরাহ করে পে-রোল ডেট "2017/05/25" এর প্যারামিটার। আপনি খেয়াল করবেন আমি কেবল ডেটা টাইপ করেছি  পে-রোল ডেট বিভিন্ন তারিখের ফর্ম্যাটগুলির সাথে কুস্তির চেয়ে স্ট্রিং হিসাবে। স্ট্রিংটিকে ডেটে রূপান্তর করতে যথেষ্ট সহজ using রূপান্তর করুন ফাংশন যদি পে-রোল ডেট পাটিগণিত উদ্দেশ্যে ব্যবহার করা হয়।

একটি নতুন ওয়ার্কবুক তৈরি করুন। ভিবিএ কোড উইন্ডোটি খুলুন এবং একটি মডিউল sertোকান।

কোড উইন্ডোটির সরঞ্জাম মেনু থেকে, উপযুক্ত উল্লেখ করুন অ্যাক্টিভ এক্স ২.এনএন লাইব্রেরি ডেটা অবজেক্টের ব্যবহারের সুবিধার্থে।ডেটা অবজেক্টের ব্যবহার সহজ করার জন্য উপযুক্ত Active X 2.nn লাইব্রেরিটি উল্লেখ করুন।

কোড উইন্ডোতে নিম্নলিখিত কোডটি আটকান। এটি, একবার সক্রিয় হয়ে গেলে, এর সাথে সংযুক্ত হবে SQL Serverকানেক্টডাটাবেস সাব পদ্ধতি হিসাবে

'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

পত্রক 1 এ একটি বোতাম যুক্ত করুন এবং এটি উপ পদ্ধতিতে নির্ধারণ করুন "রাইটস্টোরড প্রসেসর"

ফলাফলগুলো

বোতাম টিপুন, তারপরে tblStaff পরীক্ষা করুন, যা বয়স এবং বয়সসীমা নিয়ে আপডেট করা উচিত। প্রক্রিয়াজাতকরণটি সার্ভার-সাইডে স্থান নিয়েছে।

দূষিত ওয়ার্কবুকগুলি পুনরুদ্ধার করা

এক্সেল ক্র্যাশ করলে আপনার ওয়ার্কবুকটির একমাত্র কপিটিও নষ্ট হয়ে যেতে পারে। অনেক ক্ষেত্রেই এক্সেল ক্ষতিগ্রস্ত ওয়ার্কবুক পুনরুদ্ধার করতে পারে না; এমন পরিস্থিতিতে, ওয়ার্কবুকটি তৈরি করার পর থেকে করা সমস্ত কাজ অপূরণীয়ভাবে হারিয়ে যেতে পারে, যদি না আপনার কাছে এটি পুনরুদ্ধারের কোনো টুল থাকে। এক্সেল মেরামত xlsx বা xlsm ফাইল।

লেখকের ভূমিকা:

ফেলিক্স হুকার একটি ডেটা রিকভারি বিশেষজ্ঞ DataNumen, ইনক। যা তথ্য পুনরুদ্ধারের প্রযুক্তিগুলির সহ বিশ্বের শীর্ষস্থানীয় বিরল মেরামত এবং স্কয়ার পুনরুদ্ধার সফ্টওয়্যার পণ্য। আরো তথ্যের জন্য, যান WWW.datanumen.com

এখন শেয়ার:

মন্তব্যসমূহ বন্ধ করা হয়.