| Hallo zusammen,  
  
ich bekomme eine Stücklistenauflösung nach folgendem Schema  
ID  Level       ArtikelNr Auslaufdatum  
1	1        	Artikel	          
2	.2       	ArtikelX	  31-03-11  
3	..3      	ArtikelY	  
4	.2      	ArtikelZ	          
5	..3     	ArtikelZA  
6   ...4        ArtikelZB  
In diesem Fall wären ID 2 und 3 ungültig, auch wenn dort (in 3) kein  
Auslaufdate eingetragen ist. ArtikelZ und dessen Children sind  
aber wiederum gültig, weil kein Auslaufdate gesetzt ist.  
  
In DAO würde ich zwei recordsets öffnen, eines läuft eine ID   
voran, dann prüfen ob ID2 ungültig ist, das rs weiterlaufen  
lassen bis der Level wieder auf 2 ist und dazwischen alles löschen.  
  
Das kann man doch bestimmt im SQL-Server über einen Cursor lösen.  
Das wäre allerdings mein erster.  
Ich weiß einfach nicht wie ich den zweiten Wert(die nächste ID) mit  
dem ersten vergleichen kann, um dann auch noch zu löschen.  
Hier mein doch sehr bescheidener erster Ansatz  
  
declare cur cursor for   
select id,REPLACE([Level],'.',''),ExpiryDate from dbo.BOM_AllBom  ORDER BY ID   
open cur  
declare @id int  
declare @LevelOld int  
declare @dtOld varchar(10)  
declare @LevelNew int  
declare @dtNew varchar(10)  
fetch next from cur into @id,@levelOld,@dtOld  
while (@@FETCH_STATUS = 0)  
begin  
    print(cast(@id as nvarchar(10))+ '  :  '+CAST(@levelOld as varchar(2))+'  :  '+@dtOld)  
	[Das print brauche ich nur, um zu prüfen ob das richtige rauskommt]  
    fetch next from cur into @id,@levelnew,@dtnew  
     
end  
  
close cur  
deallocate cur  
  
Wenn es eine einmalige Sache wäre, würde ich das via Access lösen,  
aber das soll min. einmal wöchentlich laufen. Es sind übrigens knapp 600.000 Datensätze.  
Das Programm selbst ist vb.net, kein Access  
  
Was muss ich hier tun?  
Könnt ihr mir hier auf die Sprünge helfen?  
Oder kann man sowas mit Ado.net lösen, wobei ich glaube eine SP auf dem Server ist schneller  
  
Danke Raimo |