WinFuture-Forum.de: SQLCMD Query in FOR-Schleife - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

SQLCMD Query in FOR-Schleife


#1 Mitglied ist offline   mitknacker 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 12. April 16
  • Reputation: 0

geschrieben 12. April 2016 - 13:18

Tagchen!

Ich wühle mich nun schon eine Weile durch verhältnismäßig wenig Code, aber ich komm leider nicht da hin, wo ich hin möchte. Da ich durch einiges an googlen öfter auch mal in diesem Forum gelandet bin und mir auch gute Infos hier rausholen konnte, dachte ich mir, dass ich doch direkt mal einen Beitrag erstelle. Möglicherweise hat hier ja jemand den richtigen Gedanken oder sieht, was ich falsch gemacht, bzw. übersehen habe.

Es geht darum, dass ich eine Textdatei bekomme, aus der ich ein paar Infos raushole, diese etwas weiterverarbeite und anschließend in eine Datenbank schreibe. Hier der Testcode bisher:

@echo off
set pfad=selectline-pc\selectline
set user=SA
set pass=MEINPASS
set name=SL_MGBK
set gewicht=27
for /l %%k in (1,1,4) do (
sqlcmd -I -M -U %user% -P %pass% -S %pfad% -d %name% -Q "insert into paket(belegtyp, belegnummer, zaehler, paketnummer, gewicht) values ('L', 1600010, %%k, 123456789, %gewicht%)"
)
pause

MEINPASS ist natürlich korrekt hinterlegt und der Code funktioniert einwandfrei. Habe ich einfach mal gemacht, um die Verbindung generell zu testen und ein paar Einträge zu schreiben. So weit, so gut...

Nun möchte ich die Abfrage in meine eigentliche Datei schreiben:

@echo off & setlocal enabledelayedexpansion
echo Trackingdaten werden importiert. Bitte warten...

set pfad=selectline-pc\selectline
set user=SA
set pass=MEINPASS
set name=SL_MGBK

for /f "tokens=2,13 delims=;" %%i in ('findstr /n $ test.txt') do (
set gewicht=93
set /a pakete=gewicht/31+1
set /a gewicht=gewicht/pakete
for /l %%k in (1,1,!pakete!) do (
rem echo %%k
sqlcmd -I -M -U %user% -P %pass% -S %pfad% -d %name% -Q "insert into paket(belegtyp, belegnummer, zaehler, paketnummer, gewicht) values ('L', %%j, %%k, %%i, %gewicht%)"
)
)

pause

Ohne die Abfrage funktioniert auch dies einwandfrei. Gestestet mit der Ausgabe echo %%k. Wenn ich aber nun die Abfrage mit reinsetze (welche ja an sich funktioniert), dann bekomme ich den Fehler: Sqlcmd: Fehler: Microsoft ODBC Driver 11 for SQL Server : Fehler bei der Anmeldung für den Benutzer 'SA'..

Ich befürchte ja fast, dass ich etwas recht simples übersehen habe.. freue mich über jeden Hinweis :)

Zusätzlich sollte ich noch erwähnen, das wird natürlich die erste Verwunderung sein.. die Variablen im zweiten Teil hatte ich dann natürlich auch von %user% zu !user! usw. probiert, was leider auch nicht geholfen hat. Also versuche ich nun den ersten mit enabledelayedexpansion umzusetzen.

Vielen Dank vorab,
Marco

Dieser Beitrag wurde von mitknacker bearbeitet: 12. April 2016 - 13:32

0

Anzeige



#2 Mitglied ist offline   mitknacker 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 12. April 16
  • Reputation: 0

geschrieben 12. April 2016 - 13:53

Geez... ja, natürlich, boah, blind! Es war keine Kleinigkeit in dem Sinne, aber nichts desto trotz ziemlich simpel.. ich hatte mal gepflegt ignoriert, dass meine Werte für die Datenbank komplett fürn Po sind, wenn ich das delayed davor schon enable. Also erst die Variablen für die Datenbank setzen, DANN enabledelayedexpansion, damit die Weiterverarbeitung auch funktioniert. So klappt es. Ich lasse es einfach mal so als gelöst hier drin.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0