Ho un problema che con VBA a lato applicazione riuscirei a risolvere
con un semplice ciclo sul RecordSet.
Ma in questo caso devo farlo a lato DataBase ( SQLServer )
e non sono preparato.

Le 2 tabelle ridotte all'osso sono:
"Originale"
- IdOrig -- Key Autoincrementale
- Peiodicita - nvarchar(3)
- Desc1 - nvarchar(250)
Nel campo Periodicita sono ammessi soli i valori
--- Set
--- Men
( significa Settimanale e Mensile )
La seconda tabella si chiama "Replicata"
- OrigRef --- Numerico
- Data ------ DateTime
- Desc2 --- nvarchar(250)
( oltre naturalmente all' Id in questo momento ininfluente )
I record della tabella "Originale"
devono essere copiati/replicati nella tabella "Replicata"
in funzione della periodicita definita al campo Originale.Periodicita
se vogliamo esemplificare nella tabella "Originale" ho:
- IdOrig ------ Periodicita --------- Desc1 ------
-- 101 ------------- Set ------------- aaa
-- 102 ------------- Set ------------- bbb
-- 103 ------------- Set ------------- ccc
-- 104 ------------- Men ------------- ddd
-- 105 ------------- Set ------------- eee
Nella tabella "Replicata" ho:
- OrigRef --------- Data --------- Desc2 ---------
---- 101 -------- 31/03/2015 ------ aaa
---- 101 -------- 07/04/2015 ------ aaa
---- 102 -------- 06/04/2015 ------ bbb
---- 102 -------- 13/04/2015 ------ bbb
---- 103 -------- 25/04/2015 ------ ccc
---- 104 -------- 10/03/2015 ------ ddd
---- 104 -------- 10/04/2015 ------ ddd
oggi è il 16/04/2015 Devo creare una routine/Insert che aggiunga questi record alla "Replicata":
- OrigRef --------- Data --------- Desc2 ---------
---- 101 -------- 14/04/2015 ------ aaa
---- 101 -------- 21/04/2015 ------ aaa (Stop perche ha superato oggi )
---- 102 -------- 20/04/2015 ------ bbb (Stop perche ha superato oggi )
-------------------------------------- ( 103 nulla perche è gia a posto )
---- 104 -------- 10/05/2015 ------ ddd (Stop perche ha superato oggi)
---- 105 -------- 16/04/2015 ------ eee ( Non c'era nessun precedente quindi inserisce solo quello odierno )
Idee ???
Grazie
Segue il CreateTable di quanto sopra detto
USE [master]
GO
CREATE DATABASE [Demo]
GO
USE [Demo]
GO
CREATE TABLE [dbo].[Originale]
(
[IdOrig] [int] IDENTITY(1,1) NOT NULL,
[Periodicita] [nvarchar](3) NULL,
[Desc1] [nvarchar](250) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Replicata]
(
[OrigRef] [int] NULL,
[Data] [datetime] NULL,
[Desc2] [nvarchar](250) NULL,
[IdReplic] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[Originale] ON
GO
INSERT [dbo].[Originale] ([IdOrig], [Periodicita], [Desc1])
VALUES
(101, N'Set', N'aaa'),
(102, N'Set', N'bbb'),
(103, N'Set', N'ccc'),
(104, N'Men', N'ddd'),
(105, N'Set', N'eee')
SET IDENTITY_INSERT [dbo].[Originale] OFF
GO
INSERT [dbo].[Replicata] ([OrigRef], [Data], [Desc2])
VALUES
(101, CAST(0x0000A46C00000000 AS DateTime), N'aaa'),
(101, CAST(0x0000A47300000000 AS DateTime), N'aaa'),
(102, CAST(0x0000A47200000000 AS DateTime), N'bbb'),
(102, CAST(0x0000A47900000000 AS DateTime), N'bbb'),
(103, CAST(0x0000A48500000000 AS DateTime), N'ccc'),
(104, CAST(0x0000A45700000000 AS DateTime), N'ddd'),
(104, CAST(0x0000A47600000000 AS DateTime), N'ddd')
GO