Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Mittels VBS eine Maske für SQL-Abfrage erstellen?

Frage Entwicklung

Mitglied: goodbytes

goodbytes (Level 2) - Jetzt verbinden

11.03.2009, aktualisiert 10:08 Uhr, 6584 Aufrufe, 3 Kommentare

Hallo,
ich habe mir eine SQL-Abfrage erstellt, die mir das Ergebnis in eine txt-Datei speichert. Funktioniert auch prima
Die Abfrage rufe ich mit einer Batch auf (nutze dazfür "SQLCMD"); dieigentliche SQL-Abfrage steht in der "Abfrage.txt".

Batch-Datei:
01.
SQLCMD -U ODBC-Zugriff -P odbc -S Server\DATENBANK -d Instanzname -i Abfrage.txt -o Ergebnis.txt -r 1 -R -W -b -s ";"
Abfrage.txt:
01.
SELECT      * 
02.
FROM           [DB_Zählpunkt] RIGHT OUTER JOIN 
03.
                      [DB_Zeile] ON [DB_ZP].Nr_ = [DB_Zeile].ZPNr_ LEFT OUTER JOIN 
04.
                      [DB_Kopf] ON [DB_Zeile].Rechnungsnr_ = [DB_Kopf].Nr_ 
05.
 
06.
WHERE       ([DB_Zeile].Code= 'S') 
07.
                      AND ([DB_Zeile].Gruppe = 'E-003)  
08.
                      AND (([DB_Kopf].[Von-Datum] BETWEEN CONVERT(DATETIME, '2008-01-01 00:00:00', 102) 
09.
                      AND CONVERT(DATETIME, '2008-12-31 00:00:00', 102))  
10.
                      AND ([DB_Kopf].[Bis-Datum] BETWEEN CONVERT(DATETIME, '2008-01-01 00:00:00', 102) 
11.
                      AND CONVERT(DATETIME, '2008-12-31 00:00:00', 102))) 
12.
ORDER BY [DB_Kopf].Nr_
Die Filterkriterien (Code, Gruppe und der Zeitraum) ändere ich immer direkt in der Abfrage.
Nun soll allerdings ein Benutzer, der nichts mit SQL am Hut hat diese Abfrage regelmäßig ausführen (und muss natürlich auch entsprechend auch die Filterkriterien ändern können).

Wie bekomme ich da eine einfache Maske hin, wo er seine Werte einfach übergibt?
Von der "Abfrage.txt" und der Batch soll er ja möglichst gar nichts mitbekommen.

Torsten
Mitglied: godlie
11.03.2009 um 11:22 Uhr
Hallo afaik ist es in VBS net möglich GUI's zu bauen ( lass mich gerne vom Gegentiel überzeugen ).

Aber eine möglichkeit wäre es in html ein vbscript einzubetten, damit wäre die Möglcihekit zur Eingabe gegeben.

hab hier was gefunden: link

grüße
Bitte warten ..
Mitglied: goodbytes
11.03.2009 um 18:24 Uhr
Hallo godlie,
das ist natürlich sehr elegante Variante um schnell eine Oberfläche zu bekommen, vor allem, weil man diese sehr schnell bei Änderungen anpassen kann.

Aber bei der Umsetzung meines speziellen Problems hab ich da so meine Probleme.

Den SQLCMD-Aufruf könnte ich ja direkt in den vbs-Teil einbinden, allerdings nutzt dieser Aufruf ja eine separate Datei, die die reine SQL-Abfrage enthält. Ich muss aber über diese grafische Oberfläche ja die Filterkriterien in dieser Abfrage ändern. Also entweder aus den Ergebnissen der Oberfläche direkt in die Datei schreiben (wie aber dann an die richtige Stelle?), oder den Inhalt der Abfrage-Datei irgendwie direkt mit in die hta-Datei mit reinbringen.

Oder kann man das Problem doch nur mit VB lösen? (VB6 hab ich zumindest noch da.) Da wären natürlich grafische Oberflächen auch möglich. Nur ist mir das zu komplex das hinzubekommen. Man könnte da mit Sicherheit alles gleich komplett reinbekommen, aber da kenne ich mich einfach zu wenig aus.

Torsten
Bitte warten ..
Mitglied: goodbytes
17.03.2009 um 13:24 Uhr
Also diese Umsetzung mittels einer hta-Datei habe ich jetzt hinbekommen. Auch die SQL-Abfrage ist komplett mit drin (ohne Zeilenumbruch in der Zeile "oShell.Run "SQLCMD..."):

01.
<head> 
02.
<title>SQL-Abfrage</title> 
03.
<HTA:APPLICATION 
04.
    APPLICATIONNAME="SQL-Abfrage" 
05.
    SCROLL="no" 
06.
    SINGLEINSTANCE="yes" 
07.
    WINDOWSTATE="normal" 
08.
    SysMenu ="Yes" 
09.
10.
 
11.
<script language="VBScript"> 
12.
 
13.
Dim WScript 
14.
Dim WshShell 
15.
Dim oShell 
16.
 
17.
Set WScript = CreateObject("WScript.Shell") 
18.
Set oShell = CreateObject("WScript.Shell") 
19.
 
20.
oShell.Run "SQLCMD " & "-U ODBC-Zugriff -P odbc -S MeinServer\Instanz -d Datenbank -Q ""USE Datenbank ... (Meine Abfrage)"" -o Ergebnis.txt -r 0 -R -W -b -s " & ";""", 1, True 
21.
 
22.
</script> 
23.
 
24.
</head>
Nun habe ich aber noch ein letztes Problem. Ich kann ja in der hta-Datei Eingabeboxen definieren.
z.B.:

01.
MeineVariable = InputBox("Bitte den Wert eingeben: ","Wert-Eingabe")
Wie kann ich aber nun diese Variable in der enthaltenen SQL-Abfrage nutzen?

Torsten
Bitte warten ..
Ähnliche Inhalte
Datenbanken
gelöst Hilfe bei SQL-Abfrage (5)

Frage von emeriks zum Thema Datenbanken ...

Datenbanken
gelöst SQL-Abfrage mit "kleiner gleich" funktioniert nicht (2)

Frage von derSESO zum Thema Datenbanken ...

Datenbanken
gelöst SQL Abfrage - Ausgabe von Person mit Privat- und Dienstadresse (3)

Frage von CBruns zum Thema Datenbanken ...

Neue Wissensbeiträge
Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(4)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Heiß diskutierte Inhalte
Windows 7
gelöst Lokales Adminprofil defekt (25)

Frage von Yannosch zum Thema Windows 7 ...

Server
gelöst Wie erkennen, dass nur deutsche IPs Zugang zu einer Website haben? (22)

Frage von Coreknabe zum Thema Server ...

LAN, WAN, Wireless
gelöst Statische Routen mit ISC-DHCP Server für Android Devices (22)

Frage von terminator zum Thema LAN, WAN, Wireless ...

Exchange Server
gelöst Migration Exchange 2007 zu 2013 - Public Folder teilweise weg (16)

Frage von Andy1987 zum Thema Exchange Server ...