Datenbankabfrage an SQl-Server mit VB

maria-rita

Mitglied
Hallo @ALL

ich bin absoluter Anfänger in VB.
In SQL fühle ich mich weitgehend sicher. Wir arbeiten mit SQL Server 2000 und Office XP auf Windows XP Professional Workstations.

Nun habe ich folgende Frage:

Bisher habe ich für die Serienbrieffunktion in Word den Microsoft Query über ODBC verwendet. Ich verändere nun jedes Mal das SQL-Statement und bekomme auch die richtigen Ergebnisse im Serienbrief. Das Ändern des SQL-Statements stellt für unsere Sekretärinnen aber oftmals ein Problem dar. Daher möchte ich nach dem Laden des Serienbriefes in Word automatisch ein VB-Skript starten, welches die gewünschten Parameter abfrägt und entsprechend im SQL-Statement im Microsoft Query austauscht.
Diese vier Variablen sollen ausgetauscht werden.

set @semTyp = 'AA1'
set @jahr = 2004
set @teil = 0
set @nr = 1

Vielen Dank für Eure Hilfe

Marita

Anlage : SQL-Statement

-- ***************************************************************************
-- Seminaranschreiben für Zertis (ohne Noten), Serienbrief, Anstecker usw. einteilig
-- ***************************************************************************

-- Variablendeclaration

declare @semTyp varchar(4), @jahr int, @teil int, @nr int

set @semTyp = 'AA1'
set @jahr = 2004
set @teil = 0
set @nr = 1


-- Ende Variablendeclaration

SELECT p.personId,
p.surname as nachname,
p.firstname as vorname,
convert(char (10),p.birthday,104) as geburtsdatum,
anrede = (CASE WHEN (p.sex = 'W') THEN ('Frau ') ELSE ('Herr') END),
b.bookBank AS BLZ,
b.mark,
b.points,
c.description AS bankname,
c.street,
c.postcode,
c.place,
s.seminarType +' '+RIGHT(s.semYear,2)+LTRIM(STR(sp.partnumber))+(CASE WHEN s.seqNumber<=9
THEN LTRIM(STR(0)+LTRIM(STR(s.seqNumber))) else LTRIM(STR(s.seqNumber))end) AS Semkuerzel,
discr,
sp.remark,
convert(char (10),MIN(spd.seminarDay),104) as Beginn1,
convert(char (10),MAX(spd.seminarDay),104) as Ende1,
datediff(d, MIN(spd.seminarDay) , MAX(spd.seminarDay)+1) as dauerSem1,
(CASE WHEN (datediff(d, MIN(spd.seminarDay) , MAX(spd.seminarDay) -1) > 0)
THEN ( 'vom '+ convert(char (10),MIN(spd.seminarDay),104)+
' bis '+ convert(char (10),MAX(spd.seminarDay),104))
ELSE ('am ' + convert(char (10),MIN(spd.seminarDay),104)) END) as Dauerklar1

FROM
BookingDimension bd
RIGHT OUTER JOIN Booking b ON bd.bookingId = b.bookingId
INNER JOIN Customer c ON b.bookBank = c.BLZ
INNER JOIN Person p ON b.personId = p.personId
INNER join seminarPart sp ON sp.seminarPartId = b.seminarPartId
INNER join seminar s ON s.seminarId = sp.seminarId
INNER join seminarPartDay spd ON spd.seminarPartid = sp.seminarPartId
LEFT JOIN (SELECT TOP 1 sty.description AS Discr, sty.catalogYear AS Jahr
FROM
SeminarTypeYear sty
WHERE sty.catalogYear<=2004
AND (sty.seminarType= @semTyp)
ORDER BY sty.catalogYear desc) AS SeminarTitel ON SeminarTitel.Jahr <= s.semYear
WHERE (b.status <> 'X')
AND (p.personId like '%')
AND (b.seminarPartId IN
(SELECT sp.seminarPartId
FROM SeminarPart sp
WHERE sp.partNumber = @teil
AND sp.seminarId IN
(SELECT s.seminarId
FROM Seminar s
WHERE s.seminarType = @semTyp
AND s.semYear = @jahr
AND s.seqNumber = @nr)
))
GROUP BY
p.personId,
p.surname,
p.firstname,
p.birthday,
p.sex,
b.mark,
b.points,
discr,
sp.remark,
b.bookBank,
c.description,
c.street,
c.postcode,
c.place,
s.seminarType,
s.semYear,
s.seqNumber,
sp.partnumber;
 
Hier findest du ein Tutorial zum Thema MySQL-Datenbanken, die VB-Implementierung lässt sich auch für den SQL-Server anwenden(gehören ja nur die SQL-Befehle dementsprechend geändert).


Der Doc!
 
Re:Datenbankabfrage an SQL-Server mit VB

Hallo,

vielen Dank für Deine Antwort. Ich habe das mal überflogen, bin mir aber nicht sicher ob dies das ist was ich brauche. In dem Beispiel werden die Daten ausgelesen und ausgegeben. Ich brauche aber den umgekehrten Weg.

Ich möchte ja Daten in eine VB-Maske eingeben können (als Parameter) die dann im SQL-Statement an einer bestimmten Stelle eigefügt werden können sollen, z. B. Seminarkürzel, Jahr usw.

Vielen Dank für Deine (Eure) Bemühungen.

Viele Grüße

Marita Betz
 

Neue Beiträge

Zurück