Delete query in gekoppelde tabel?

Status
Niet open voor verdere reacties.

sikkepit3

Gebruiker
Lid geworden
11 apr 2015
Berichten
29
Beste allemaal,

Ik ben op dit moment bezig met het koppelen van een Microsoft SQL server database en heb deze gekoppeld aan mijn Access applicatie.
Echter als ik een delete query uitvoer krijg ik een 'error 3086 kan geen gegevens verwijderen uit de opgegeven tabellen.'.
Het rare is dat ik via Microsoft SQL server Express wel gewoon een delete query kan uitvoeren.
Kan iemand mij helpen om te kijken wat ik nou fout? Mijn code staat hieronder:
Code:
Private Sub Leegmaken_CRM_Click()
Dim Response As Integer
Response = MsgBox("Hiermee verwijder je alle gegevens uit de tabel Project. Wil je doorgaan?", vbYesNo + vbQuestion, "Client Prompt")
If Response = vbYes Then
'hier het verwijderen van de tabel inzetten.
    DoCmd.SetWarnings False
    DoCmd.RunSQL "DELETE * FROM [dbo_CRM]"
    DoCmd.SetWarnings True
    
'Leegmaken importfouten
    Dim T As TableDef
    DoCmd.SetWarnings False
    For Each T In CurrentDb.TableDefs
    If T.Name Like "*Importfouten*" Then
    CurrentDb.TableDefs.Delete T.Name
    End If
    Next T
    DoCmd.SetWarnings True
Else
Cancel = True
MsgBox "De tabel is niet verwijderd."
End If
End Sub

Alvast bedankt!
 
Dat kan alleen als je een Pass-through query gebruikt. ALs het gaat om het verwijderen zonder verdere parameters snap ik niet dat je dat überhaupt via een VBA procedure wilt doen, want zo lastig is dat allemaal niet.
Alternatief is om een Recordset te openen op basis van de SQL server, en dat doe je nu ook niet. Daar heb je de juiste connection string voor nodig die ik voor jou natuurlijk ook niet weet, maar die je hier wellicht kunt vinden.
 
Sorry dat ging iets te snel voor me. De reden waarom ik dit via VBA wil doen is omdat de gebruiker een tabel leeg moet maken en daarna zelf weer wilt vullen (dit gaat dmv 2 knoppen).
Ik moet dus een zogenaamde 'Pass-through' query gebruiken om alsnog dingen te kunnen verwijderen?

Ik heb een voorbeeld opgezocht maar hier kan ik niet echt veel van maken eigenlijk.

Code:
nction CreateSPT (SPTQueryName As String, SQLString As String, _
                  ConnectString As String)
      '-----------------------------------------------
      ' FUNCTION: CreateSPT()
      ' PURPOSE:
      '   Creates an SQL pass-through query using the supplied arguments:
      '      SPTQueryName: the name of the query to create
      '      SQLString: the query's SQL string
      '      ConnectString: the ODBC connect string, this must be at
      '         least "ODBC;"
      '-----------------------------------------------
         Dim mydatabase As Database, myquerydef As QueryDef

         Set mydatabase = DBENGINE.Workspaces(0).Databases(0)
         Set myquerydef = mydatabase.CreateQueryDef(SPTQueryName)

         myquerydef.connect = ConnectString
         myquerydef.sql = SQLString
         myquerydef.Close
      End Function
 
Een Pass-thruough query maak je gewoon in het query-venster. Die query kun je dan weer met een standaardknop laten uitvoeren.
 
Omdat dit zoveel moeite voor mij kost ga ik toch even overleggen of dit wel de beste optie is. Misschien ook een goed punt om te vragen of jij of anderen nog een betere oplossing hebben.
Ik heb op dit moment twee tabellen die ik via een csv bestand ophaal. Deze bevatten ieder ong 30-40 kolommen en soms wel 100k records.

Ik voeg deze met een query samen waar ik er ongeveer 30-50k records overhou. Nou wil ik deze exporteren naar een excel bestand. Het lijkt alleen alsof het exporteren van een query
een stuk meer traagheid oplevert dan het exporteren van een tabel in Access?
Ik dacht dat een SQL server erachter hangen het dan een stuk sneller zou maken (dit klopt tot noch toe ook) alleen omdat tijd geld is vraag ik me toch af of dit uiteindelijk handig zal zijn.

Zijn er misschien andere mogelijkheden? Is het misschien een goed idee om mijn Access Query om te zetten in een tabel?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan