Mit einer SP in SQL die eine BAT Datei Aufruf sollte das einfach klappen:
-- Aufruf in PSP: ___Environment ( STL_OUT=#(XDWSFKT
RE_STL_OUT ( ,#AIMKEY, ) ) );
CREATE PROCEDURE [dbo].[DRE_STL_OUT]
@rueckgabe varchar(80) OUTPUT,
@aimkey varchar(50)
AS
BEGIN
DECLARE @Ident AS nvarchar(15)
SET @Ident = (SELECT IDENT FROM PART WHERE AIMKEY = @aimkey)
IF @Ident IS NOT NULL -- ggf. Prüfen ob IDENT = @Artikelnummer
DECLARE @PassedVariable VARCHAR(100)
DECLARE @CMDSQL VARCHAR(1000)
SET @PassedVariable = @aimkey + ' ' + @Ident
SET @CMDSQL = 'C:\PSP\PSP_SRV\_ANPASSUNGEN\PSP_ERP\dbp\stlout.bat ' + @PassedVariable
EXEC xp_cmdshell @CMDSQL
SET @rueckgabe = 'Erfolgreich'
END
--#############################
stlout.bat Inhalt
REM Parameter 1: AIMKEY Hauptartikel
REM Parameter 2: IDENT Hauptartikel
set DB=PSP
set ERP_PFAD=\\srv01\_STLOUT
set ERP_STL_FILENAME=%2.csv
set STL_TEMP=c:\stltemp
set SQL_LOGIN=-Spsp_srv01 -UPSP -Pxxxxxxx
set TEMP_EINDEUTIG=%RANDOM%-%TIME:~6,5%
md %STL_TEMP%
bcp "SELECT '%2',IDENT,X_POSITION,X_QUANTITY FROM %DB%.dbo.VIEW_XREF_CHILD_PART WHERE X_PARENT_AIMKEY=%1 ORDER BY X_POSITION" queryout "%STL_TEMP%\%TEMP_EINDEUTIG%_2.csv" -c -CACP -t, %SQL_LOGIN%
--#############################
Erklärung:
Die PSP Funktion #(XDWSFKT
RE_STL_OUT ( ,#AIMKEY, ) ) ruft die Stored Procedure (SP) DRE_STL_OUT auf und übergibt den AIMKEY des aktuellen Artikels
die SP wiederum ruft auf dem SQL Server die BAT-Datei stlout.bat auf und übergibt dieser auch den AIMKEY (und den Ident...)
die Batchdatei stlout.bat schreibt nun über das SQL Befehlszeilentool bcp und einem Select auf die Datenbank die Werte in eine Textdatei. das -t, gibt komma als Trennzeichen an. Dort sollte auch ein ; gegen als -t; s. http://msdn.microsoft.com/de-de/library/ms162802(v=sql.90).aspx
------------------
Grüsse
Jürgen
Inventor FAQ
Inventor eBook 1577 Seiten
www.dressler.biz
Autodesk Inventor Certified Expert
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP