Si të përdorni Excel për të lexuar dhe shkruar një bazë të dhënash të jashtme

Excel mund të bëjë pothuajse çdo gjë; nëse duhet bërë për të bërë gjithçka është tjetër çështje. Ndërsa spreadsheet është shumë i fuqishëm në manipulimin e të dhënave, nuk është shumë i mirë në ruajtjen e të dhënave të normalizuara. Përdorimi i Excel në një bazë të dhënash relacionale si SQL Server rrit fuqinë e aplikacionit.

Për të filluar, do t'ju duhet MS Access ose një version më i qëndrueshëm dhe falas – SQL Server shprehin. Supozohet se lexuesi ka të shfaqur shiritin e Zhvilluesit të Excel dhe është i njohur me Redaktorin VBA dhe gjuhën e strukturuar të pyetjeve (SQL). Ky artikull përdor SQL Server vargjet e lidhjes. Për MS-Access, referojuni Google.

Ndërsa Excel ka rutinat e veta të integruara për marrjen e informacionit SQL Server në (të themi) një tabelë kryesore, shembulli ynë do të japë më shumë fleksibilitet në përzgjedhjen e të dhënave.

Vargu i lidhjes

Unë do të përdor një bazë të dhënash private; futni informacionin tuaj të shoferit në vend të timit në nënrutinë ConnectDatabase. Më pas përdorim connDB si një kanal komunikimi në bazën tonë të të dhënave – në rastin tim për të kthyer rezultatet nga një procedurë e ruajtur. Ju mund të përdorni më shumë deklarata standarde SQL si "Zgjidh * nga ..."

Urdhri i Biznesit

Së pari, ne do të ngarkojmë zgjedhjet e kutisë së kombinuar nga SQL Server kur hapet libri i punës, duke përdorur një makro Auto_open dhe duke e hedhur atë në fletën "ComboData". Pavarësisht nëse Serveri është në cloud apo lokal, nuk do të ketë vonesë të dukshme në nisjen e Excel - për sa kohë që baza e të dhënave është e arritshme nga stacioni i punës.

Më pas, ne do të nxjerrim të dhënat e filtruara nga baza e të dhënave dhe do t'i hedhim në Excel, kolonat F deri në K.

Ndërfaqja

Mini ka kuti rënëse për të filtruar informacionin nga baza e të dhënave. Të Rol kutia e kombinuar shkakton një kërkim për të mbushur tabelën në të djathtë.Kutia e kombinuar e roleve shkakton një kërkim për të mbushur tabelën

Riemërto "Fleta1" si "Kryesore". Shtoni të paktën një kuti të kombinuar.

Kodi

Public connDB As New ADODB.Connection
Public rstNew As New ADODB.Recordset
Public rs As New ADODB.Recordset
Public strSQL As String
Public nID As Integer

Sub auto_Open()
    Call PopulateComboData     'kicks off the first process  on Open
End Sub

Sub PopulateComboData()
    Sheets("ComboData").Range("A3:C100").ClearContents
    Call ConnectDatabase      'use the ConnectDatabase routine
    strSQL = "Select DeptID, Department, Phase from tblDept Order by Department"
    Set rs = connDB.Execute(strSQL)
    ActiveSheet.Range("A3").CopyFromRecordset rs      'copies the recordset in bulk
End Sub

Sub ReadData()
    intRole = Sheets("main").Range("D7")
    Sheets("Main").Range("F4:L100").ClearContents
    Call ConnectDatabase
    strSQL = "EXEC DBTest " & intRole    'calls a stored proc with parameter
    Set rs = connDB.Execute(strSQL)
    ActiveSheet.Range("F4").CopyFromRecordset rs      'copies the recordset in bulk
End Sub

Sub ConnectDatabase()
    On Error GoTo ErrConnect
    If connDB.State = 1 Then connDB.Close     'closes connection if already open
    strServer = "197.200.28.164" 
    strDBase = "Qcrew_sql"
    strUser = "joesoap_sql"
    strPWD = "frU6ra!@"
    If strPWD > "" Then 
        strConnectionstring = "DRIVER={SQL Server};Server=" & strServer & _
        ";Database=" & strDBase & ";Uid=" & strUser & ";Pwd=" & strPWD & _
        ";Connection Timeout=30;"
    Else        'Use windows authentication
        strConnectionstring = "DRIVER={SQL Server};SERVER=" & strServer & _
        ";Trusted_Connection=yes;DATABASE=" & strDBase
    End If
    connDB.Open strConnectionstring
Exit Sub
ErrConnect:
    MsgBox Err.Description
End Sub

Formatoni komandën e kutisë së kombinuar për të lexuar fletët "ComboData". Pastaj kliko me të djathtën në kutinë e kombinuar për t'i caktuar asaj nënprocedurën ReadData. Kur një artikull zgjidhet në kutinë e kombinuar, shkruani çelësin e tij në fletën "Main", qeliza D7. Kodi VBA do ta përdorë këtë çelës si filtër (shih intRole, më lart).

Referenca për bibliotekën dll

Përdorni Tools>References në dritaren e kodit për t'iu referuar bibliotekës Microsoft Active X Data Objects. Kjo do t'i mundësojë Excel-it të përdorë objektet ADODB të deklaruara në kod.Referencë Biblioteka e Objekteve të të Dhënave të Microsoft Active X

Nën-rutina ReadData e mësipërme përdor një strukturë të dhënash relacionale, e paraqitur më poshtë, e cila është e vështirë të arrihet vetëm në Excel.Nën-rutina ReadData përdor një strukturë të të dhënave relacionale

Ndryshime të mëtejshme të të dhënave mund të shkaktojnë një rikthim në bazën e të dhënave, me deklaratën e duhur SQL Update të ndjekur nga connDB.execute(strSQL).

Më në fund, mbroni kodin tuaj nga shikimi ose ndryshimi:  Mjetet>Vetitë>Mbrojtja.

Trajtoni problemet e Excel:

Herë pas here, veçanërisht kur mban programe komplekse, Excel mund të dështojë dhe të mos arrijë të mbulojë përsëri siç duhet. Në rast të një xlsx e dëmtuar skedar, të kesh në dispozicion një mjet efektiv rikuperimi do të zgjidhë shumicën e problemeve.

Hyrje e autorit:

Felix Hooker është një ekspert i rikuperimit të të dhënave në DataNumen, Inc., e cila është lider botëror në teknologjitë e rikuperimit të të dhënave, duke përfshirë riparim rar gabim dhe produkte softuerike për rikuperimin sql. Për më shumë informacion vizitoni www.datanumen.com

Komentet janë të mbyllura.