EXCEL - VBA - SQL query uitvoeren met variabele criteria

Status
Niet open voor verdere reacties.

Vigo1967

Gebruiker
Lid geworden
18 aug 2015
Berichten
7
L.S.,

Al langere tijd worstel ik met het volgende - ik gebruik SQL Server en Excel. Regelmatig maak ik directe koppelingen vanuit
Excel naar de SQL database. Nu probeer ik al langere tijd (tevergeefs) om de criteria in het SQL script te laten lopen met
variabelen die in Excel moeten worden ingevuld of via een chatbox worden opgegeven.

Onderstaand is een klein voorbeeld van het script dat ik gebruik waarbij de variabele (afgart__.kla__ref) via een Excel
cel kan ophalen of middels een chatbox kan invullen.

Kan iemand mij op weg helpen, al is het maar een verwijzing naar hoe ik dergelijke variabelen kan opbouwen

Bij voorbaat dank,
Victor

PHP:
Sub Test_Variable_Data()
'
' Test_Variable_Data Macro
'

'
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
        "ODBC;DSN=sqlbxx;Description=sqlbxx - Cerm Database;UID=xxxxxxxx;Trusted_Connection=Yes;APP=Microsoft Office 2010;WSID=SRV-XXX-XX" _
        ), Array(";DATABASE=sqlbxx;")), Destination:=Range("$A$10")).QueryTable
        .CommandText = Array( _
        "SELECT afgart__.afg__ref, afgart__.afg_oms1" & Chr(13) & "" & Chr(10) & "FROM sqlb00.dbo.afgart__ afgart__" & Chr(13) & "" & Chr(10) & "WHERE (afgart__.kla__ref='3913')" _
        )
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Tabel_Query_van_sqlbxx"
        .Refresh BackgroundQuery:=False
    End With
End Sub
 
gebruik

Code:
msgbox "SELECT afgart__.afg__ref, afgart__.afg_oms1" & Chr(13) & "" & Chr(10) & "FROM sqlb00.dbo.afgart__ afgart__" & Chr(13) & "" & Chr(10) & "WHERE (afgart__.kla__ref='3913')"

vbcrlf=chr(13) & chr(10)


bestudeer eerst eens een VBA basisboek, want chr(13) & "" & chr(10) is onzin.
 
Laatst bewerkt:
Hoi SNB,

Hartelijk dank voor je reactie.

Nog geen kans gezien om VBA echt te gaan bestuderen. Puzzelen via Google en kijken wat e.e.a. doet en daar uitproberen met kleine
wijzigingen zijn de stappen die ik tot nu toe heb kunnen nemen. Macro opnemen en kijken hoe de code wordt opgebouwd. Niet een
ideale start, maar door mijn werkzaamheden ben ik nog niet aan verder toegekomen. Dit is zo'n pet-project waarmee ik weet dat
ik uiteindelijk tijd kan winnen voor andere zaken. Focus ligt op dit moment op het beter schrijven van SQL scripts. En ook daar pak
ik steeds een onderwerp dat ik beter probeer onder de knie te krijgen.

Hoe die code daarin is gekomen weet ik niet. Ik denk dat ik ergens te snel iets heb gekopieerd / geplakt op het moment dat de focus
verkeerd stond.

Heb je een suggestie voor een goed basisboek? Het is wel één van de zaken die ik de komende periode op wil gaan pakken daar er
voor mij veel tijdswinst te behalen valt als ik dit zelfstandig goed kan opzetten.... Tijd die ik weer kan besteden aan andere projecten
op mijn werk.

Server is helaas niet bereikbaar vanwege onderhoud, dus ik ga morgen je tip uitproberen....

MvrGr,
Victor
 
gebruik liefst, indien mogelijk, stored procedures waar je deze variabelen in meegeeft. Een stuk veiliger in het gebruik en deels ook makkelijker te beheren. Als je dit later naar een grotere groep gebruikers uit zou willen rollen wil je meestal niet iedereen volle query access geven op je database
 
Zie de bijlage.
 

Bijlagen

  • VBA_handleiding.doc
    452 KB · Weergaven: 403
Mooie start - ik ga deze direct bestuderen!
Kleine stapjes zullen het worden, maar elke is er één!
 
Thanks SNB - de manual heeft me in elk geval op weg geholpen.
Kleine verklaring nog voor die code die het script 'vervuilt' - die wordt automatisch gegenereerd bij het opnemen van de macro.
Ik heb zojuist de macro opgenomen met het complete SQL-script en dan lijkt het wel of alle returns en overige opmaak die ik
voor de leesbaarheid van het script heb gebruikt, wordt vervangen door de code : & Chr(13) & "" & Chr(10) &

Ik ben bijna waar ik wezen moet! Thanks!
 
Gelukt!!!
Variabele declareren was één, maar het aanroepen van de variabele in het SQL-script gaf nog enige problemen.
:thumb::thumb::thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan