Perfekt. Vekar inte så svårt.
Har testat och jag kan skapa en stored procedure. Men mina programmeringskunskaper är inte så bra.
Följande har jag lagt in i den och så långt fungerar det.
CREATE PROCEDURE sp_test2
@startdatum VARCHAR(8),
@slutdatum VARCHAR(8)
AS
SELECT OSBSTD1.UCORNO AS Ordernr, dbo.OSBSTD1.UCORDT AS Orderdatum, '""' AS Expr1, '""' AS Expr3, '""' AS Expr4, dbo.OSBSTD1.UCITNO AS Artnr,
'SV' AS Expr2, dbo.OSBSTD1.UCCUNO AS Kundnr, dbo.OSBSTD1.UCIVDT AS Datum, 'Foretaget AB' AS Firma, 'Gatuadress 1' AS Adress,
'123 45' AS Postnr, 'Stad' AS Stad, 'Sverige' AS Land, 1 AS Antalpersoner, dbo.OSBSTD1.UCCUNO AS Uniktpersonid,
dbo.OCUSMA.OKYREF AS Fornamn, dbo.OCUSMA.OKYREF AS Efternamn, dbo.CEMAIL.CBEMAL AS epost, 1 AS Formatspecifikation
FROM dbo.OSBSTD1 INNER JOIN
dbo.OCUSMA ON dbo.OSBSTD1.UCCUNO = dbo.OCUSMA.OKCUNO LEFT OUTER JOIN
dbo.CEMAIL ON dbo.OCUSMA.OKCUNO = dbo.CEMAIL.CBEMKY
WHERE (dbo.OSBSTD1.UCIVDT between @startdatum AND @slutdatum)
GO
Men jag skulle behöva göra den snurran som kontrollerar om Kundnr är detsamma som i föregående post och i så fall bygga upp en variabel med artikelnr så länge det är samma kundnr.
När det sedan blir ett nytt kundnr så skall en post skapas där variablen med artikeln skriv in i ett fält som kallas artikelnr.
Det är väl något sådant som koden gör i den accessfil du hittade?
Men hur skriver man det i en Stored Procedure?
Public Function FixTable() As Boolean
On Error Resume Next
Dim db As DAO.Database, rst As DAO.Recordset, sSQL As String
Dim strColumn1 As String, strColumn2 As String
Set db = CurrentDb()
Call RecreateTables(db)
Stop
sSQL = "SELECT Column1, Column2 FROM tblOriginal " _
& "ORDER BY Column1, Column2 ASC"
Set rst = db.OpenRecordset(sSQL, dbOpenSnapshot)
If Not rst.BOF And Not rst.EOF Then
rst.MoveFirst
strColumn1 = rst!Column1
strColumn2 = rst!Column2
rst.MoveNext
Do Until rst.EOF
If strColumn1 = rst!Column1 Then
strColumn2 = strColumn2 & ", " & rst!Column2
Else
sSQL = "INSERT INTO tblCopy (Column1, Column2) " _
& "VALUES('" & strColumn1 & "','" & strColumn2 & "')"
db.Execute sSQL
strColumn1 = rst!Column1
strColumn2 = rst!Column2
End If
rst.MoveNext
Loop
' Insert Last Record
sSQL = "INSERT INTO tblCopy (Column1, Column2) " _
& "VALUES('" & strColumn1 & "','" & strColumn2 & "')"
db.Execute sSQL
End If
Set rst = Nothing
Set db = Nothing
DoCmd.OpenForm "frmOutput"
End Function