Problem bei Umsetzung SQL-Server-Statement in VBA

26/09/2010 - 14:34 von Gerd Haseloff | Report spam
Ich möchte eine Anweisung, welche als SQL auf dem Server funktioniert,
in Access 2003 innerhalb einer Prozedur zum Laufen bringen. Bisher
bekam ich aber immer nur eine Fehlermeldung.


Hier das SQL -Statement -SQL-Server 2000 alle SP's

use tempdb


GO
SET NOCOUNT ON
GO

GO
/****** Objekt: Table [dbo].[tbl_belegung] Skriptdatum: 25/09/2010
08:14:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tbl_bel](
[BID] [int] IDENTITY(1,1) NOT NULL,
[RID] [int] NULL,
[TNID] [int] NULL,
[BELEGT] [smalldatetime] NULL,
[BEMERKUNG] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL
) ON [PRIMARY]

GO

DECLARE @d1 nvarchar(10)
DECLARE @d2 nvarchar(10)
DECLARE @r1 int
DECLARE @t1 int
Declare @x nvarchar(10)


SET @d1 = '08.08.2010'
SET @d2 = '17.09.2010'
SET @r1 = 5
set @t1 = 768
set @x = 'test'

WHILE convert(smalldatetime,@d1) <= convert(smalldatetime,@d2) BEGIN
INSERT INTO tbl_bel(RID,TNID,BELEGT,BEMERKUNG)
VALUES (@r1,@t1,convert(smalldatetime,@d1),@x)
SET @d1 = convert(nvarchar(10),DateAdd(dd, 1,
convert(smalldatetime,@d1)),104)
END


SELECT * from tbl_bel
GO
DROP TABLE tbl_bel
GO



jetzt mein Umsetzungsversuch mit VBA

Private Sub lvraum_ItemClick(ByVal Item As Object) - erweitertertes
Listview.Element

Dim r As Long
Dim r1 As Long
Dim t1 As Integer
Dim d1 As String
Dim d2 As String
Dim x As String
x = "Test"
r = lvraum.SelectedItem.ListSubItems.Item(1).Text
Me.txtraum = r
ls = Me.txtlgid
d1 = Me.txtdp1
d2 = Me.txtdp2
r1 = Me.txtraum

If IsNull(Me.txttn) Then
MsgBox ("Kein Teilnehmer ausgewàhlt")
Exit Sub
Else
t1 = Me.txttn
End If




Select Case MsgBox("Möchten Sie den ausgwàhlten Raum tatsàchlich
zuweisen?", vbYesNo Or vbExclamation Or vbSystemModal Or
vbDefaultButton1, "Zimmerzuweisung")

Case vbYes

Dim rs1 As ADODB.Recordset
Dim sql1$
Dim cn As ADODB.Connection

sql1 = "WHILE convert(smalldatetime,'" & d1 & "') <convert(smalldatetime,'" & d2 & "')
BEGIN INSERT INTO tbl_bel(RID,TNID,BELEGT,BEMERKUNG) VALUES (" & r1 &
"," & t1 & ",convert(smalldatetime, '" & d1 & "'),'" & x & "')
SET '" & d1 & "' = convert(nvarchar(10),DateAdd(dd, 1,
convert(smalldatetime,'" & d1 & "')),104)
End"

Set cn = New ADODB.Connection
cn.Open cs
Set rs1 = New ADODB.Recordset
rs1.CursorLocation = adUseClient
Debug.Print ; sql1
rs1.Open sql1, cn


Case vbNo
Exit Sub
End Select


End Sub

Es kommt immer ein Fehler wegen eines nicht richtigen
Datumsstatements, nur komme ich nicht darauf, wo noch der Fehler
liegen könnte.


Danke schon mal im voraus , für hilfreiche Ratschlàge,

Gruss Gerd
 

Lesen sie die antworten

#1 Hannes Brunner
26/09/2010 - 23:31 | Warnen spam
Hallo Gerd,

Am 26.09.2010 14:34, schrieb Gerd Haseloff:
Ich möchte eine Anweisung, welche als SQL auf dem Server funktioniert,
in Access 2003 innerhalb einer Prozedur zum Laufen bringen. Bisher
bekam ich aber immer nur eine Fehlermeldung.

Hier das SQL -Statement -SQL-Server 2000 alle SP's



<snip>

DECLARE @d1 nvarchar(10)
DECLARE @d2 nvarchar(10)
DECLARE @r1 int
DECLARE @t1 int
Declare @x nvarchar(10)


SET @d1 = '08.08.2010'
SET @d2 = '17.09.2010'
SET @r1 = 5
set @t1 = 768
set @x = 'test'

WHILE convert(smalldatetime,@d1) <= convert(smalldatetime,@d2) BEGIN
INSERT INTO tbl_bel(RID,TNID,BELEGT,BEMERKUNG)
VALUES (@r1,@t1,convert(smalldatetime,@d1),@x)
SET @d1 = convert(nvarchar(10),DateAdd(dd, 1,
convert(smalldatetime,@d1)),104)
END



<snip>

jetzt mein Umsetzungsversuch mit VBA



<snip>

Dim rs1 As ADODB.Recordset
Dim sql1$
Dim cn As ADODB.Connection

sql1 = "WHILE convert(smalldatetime,'" & d1 & "') <> convert(smalldatetime,'" & d2 & "')
BEGIN INSERT INTO tbl_bel(RID,TNID,BELEGT,BEMERKUNG) VALUES (" & r1 &
"," & t1 & ",convert(smalldatetime, '" & d1 & "'),'" & x & "')
SET '" & d1 & "' = convert(nvarchar(10),DateAdd(dd, 1,
convert(smalldatetime,'" & d1 & "')),104)
End"

Set cn = New ADODB.Connection
cn.Open cs
Set rs1 = New ADODB.Recordset
rs1.CursorLocation = adUseClient
Debug.Print ; sql1
rs1.Open sql1, cn



oh je, das sieht sehr nach einem verunglückten Mischmasch von VBA und
TSQL aus. Warum erstellst du nicht eine SP (gespeicherte Prozedur) am
SQL Server mit geeigneten Parametern, die du dann per VBA und einem
ADODB.Command-Objekt aufrufst?

HTH
Hannes

Ähnliche fragen