Oei, heel wat activiteit tijdens mijn periode met chronisch tijdsgebrek...
@ SoftAid,
Als je ... "VBAProject compileren" gebruikt, dan worden toch alle fouten in de code netjes gevonden en aangeduid
In 'normale' omstandigheden zou ik je volmondig gelijk geven, maar we gaan hier een stapje verder: we 'gebruiken' vba enkel om een CommandText op te bouwen die we nodig hebben om de sql-code aan de praat te krijgen, en dat is jammer genoeg iets waar vba geen oordeel over kan vellen.
@ Georgyboy,
Foutje gevonden
Code: "DDDDDDD.vrd "
Spatie na vrd
Hoezo, foutje gevonden? Die spatie
moet daar staan, anders krijg je namelijk "vrdwhere".
Wat jij ondertussen nog allemaal aan het doen bent volg ik helaas niet meer.
Heel veel posts geleden werkte iets in de stijl van "select ... from DDDDDDDD.vrd where Chargenummer = 16036" toch ook al (zie reactie #18)
Naderhand zijn we op zoek gegaan naar een flexibele methode om ervoor te zorgen dat de code niet moest gewijzigd worden, en om je toch toe te laten meerdere filters willekeurig al dan niet te gebruiken.
Omdat het maar niet wou lukken heb ik de omweg verzonnen met Access/Excel en later met Excel/Excel.
Je geeft aan dat filteren daar prima werkt. Alles wat nog moest gebeuren is dit systeem blijven gebruiken maar dan met de correcte verwijzing naar je echte database.
In bijlage dus een nieuwe Excel "erp_test". De werkbladen zijn identiek aan "db_test" van vroeger.
Een paar wijzigingen in de vba-code:
"db_bron = ..." mag weg (staat er nog als commentaar)
De initiële opdrachttekst is geworden "select * from vrd " (en wordt automatisch aangevuld met filters indien van toepassing)
Wat jij nog
mag doen : het * na 'select' vervangen door een opsomming van gewenste velden (maar moet niet).
En wat jij nog
moet doen, de belangrijkste namelijk, en die kan
enkel door jou worden gedaan:
"With ActiveSheet.ListObjects.Add ... QueryTable" staat ook in commentaar.
Die moet vervangen worden door de regel die jij in je werkend systeem aantreft, dus iets als:
"With ActiveSheet.ListObjects.Add(SourceType:=0, Source:="ODBC;DSN=DDDDDDDD-RRRRRR-SRV;ServerName=000.000.00.000.0000;" _
& "ArrayFetchOn=1;ArrayBufferSize=8;TransportHint=TCP;DBQ=DDDDDDDD;ClientVersion=00.00.000.000;" _
& "CodePageConvert=1252;PvClientEncoding=CP1252;PvServerEncoding=CP1252", Destination:=Range("$A$1")).QueryTable"
maar dan uiteraard met de juiste parameters (kopiëren en plakken lijkt mij aangewezen!)
Ik zie niet hoe het dan nog zou kunnen mislukken!
Succes,
pitufo