none
Rückgabewert einer PassTrough Abfrage in VBA

    Frage

  • Hallo,

    wir führen auf dem SQL-Server eine INSERT-Abfrage mit sp_executesql aus und bekommen die neue ID zurück.

    Set qdf = CurrentDb.CreateQueryDef("")
    With qdf
        .Connect = fktConnect()
        .sql = sql
        .ReturnsRecords = True
        Set rst = .OpenRecordset(dbOpenSnapshot)
        lngNewID = rst.Fields(0)
    End With

    Mit diesem sql-String funktioniert es:

    DECLARE @intNewID INT 
    EXEC sp_executesql N'INSERT INTO tbl_Test ( artkatID ) VALUES ( 1 ); SELECT @intID = SCOPE_IDENTITY();', N'@intID int OUTPUT', @intID = @intNewID OUTPUT; 
    SELECT @intNewID;

    Mit diesem nicht:

    DECLARE @intNewID INT 
    DECLARE @SQLString NVARCHAR(500)
    DECLARE @Parameter NVARCHAR(500)
    SET @SQLString = N'INSERT INTO tbl_Test ( artkatID ) VALUES ( 1 ); SELECT @intID = SCOPE_IDENTITY();'
    SET @Parameter = N'@intID int OUTPUT'
    EXEC sp_executesql @SQLString, @Parameter, @intID = @intNewID OUTPUT; 
    SELECT @intNewID;

    Durch "SET @.." wird kein Record zurückgegeben, woran kann das liegen? (Acc2010, SQLServer 2008 R2)

    Vielen Dank & schönen Abend

    Thomas Warnke

    Dienstag, 13. Juni 2017 14:54