2016-06-23 15 views
1

Ich habe ein VBA-Skript erstellt, das den CommandText einer SQL-Verbindung aktualisiert, um einen Parameter von Excel an eine gespeicherte Prozedur übergeben - das funktioniert gut, außer dass die Abfrage nicht funktioniert aktualisiert selbst ..Excel/VBA/SQL - Aktualisieren funktioniert nicht

Private Sub CommandButton1_Click() 

Dim BillDate As Date 
Dim BillDateFormat As String 
BillDate = Sheets("Sheet1").Range("B4").Value 

BillDateFormat = Format(BillDate, "yyyy-mm-dd") 

With ActiveWorkbook.Connections("BillDateConnection").OLEDBConnection 
.CommandText = "EXEC TTKWBillingTest @BillDate = '" & BillDateFormat & "'" 


End With 

ActiveWorkbook.Connections("BillDateConnection").Refresh 

End Sub 

ich finde, dass die Daten nur auf dem ersten Auffrischungs erfrischt und nachfolgende Aktualisierungen die Command aber die Daten auf dem Arbeitsblatt aktualisieren nicht aktualisiert.

Ich habe versucht, das Hinzufügen ..

ActiveWorkbook.RefreshAll 

aber das macht keinen Unterschied.

Irgendwelche Ideen?

Antwort

0

... die letzte Aktualisierungszeit anzuzeigen dachte ich dies.

Die Option 'Hintergrundaktualisierung aktivieren' muss in den Verbindungseigenschaften deaktiviert werden.

Die Tabelle wird jedes Mal ohne diese Option aktualisiert.

1

Put Code in ThieWorkbook Objekt, so dass es ausgelöst wird, wenn Excel öffnet

Private Sub Workbook_open() 

For Each objConnection In ThisWorkbook.Connections 
    'Get current background-refresh value 
    bBackground = objConnection.OLEDBConnection.BackgroundQuery 
    'Temporarily disable background-refresh 
    objConnection.OLEDBConnection.BackgroundQuery = False 
    objConnection.Refresh   'Refresh this connection 
    'Set background-refresh value back to original value 
    objConnection.OLEDBConnection.BackgroundQuery = bBackground 
Next 

End sub 

NB Dies kann zu Problemen führen, wenn die Datenverbindung festgelegt ist auf offener zu aktualisieren! Am besten entfernen Sie diese Option aus dem Verbindungsmanager!

über eine Taste aktualisieren:

Private Sub Cmd_RefreshData_Click() 
    Application.Run "'" & ThisWorkbook.Name & "'!ThisWorkbook.Workbook_Open" 
    ActiveWorkbook.RefreshAll 
    Lbl_LastRefresh_Click 
End Sub 

Lbl_LastRefresh Jetzt verwendet()

+0

Dies muss von einem CommandButton aktualisiert werden, da es mehrmals verwendet wird, während die Arbeitsmappe geöffnet ist. – dazzathedrummer

+0

@dazzathedrummer. Siehe Update zu meiner Antwort .. – MiguelH

+0

Hervorragend! Du hast mich gerettet! –

Verwandte Themen