praktikantin
Goto Top

Visual Basic Script zum ändern einer Datei und alte Dateien Kopieren....

SQL Server 2000 DTS...

Hallo Leute,

ich habe ein DTS entwickelt (mit sehr viel mühe) und habe einen Punkt erreicht an dem ich wirklich nicht weiter weiß. Unsere Firma benutzt Noch immer den SQL Server 2000 und da kann man nur VBScript benutzen. Ersteinmal das Script:

'**********************************************************************  
'  Visual Basic ActiveX Script  
'************************************************************************  

Function Main()
	
Dim str

Set listdir = CreateObject ("Scripting.FileSystemObject")  

	Set invfile = listdir.OpenTextFile((DTSGlobalVariables("temppath").Value), 1) ''''TEMPPATH = "C:\TEXT.TXT" DER GANZE PATH DER DATEI  
	Set newfile = listdir.CreateTextFile((DTSGlobalVariables("filename").Value)) '''FILENAME = '"TEXT.TXT" NUR DER NAME DER DATEI  

	
	while (invfile.AtEndOfStream = False)

	ch = invfile.ReadLine 				'''read the first line  

	If ((left(ch,9))<>" DATETIME"  and  (left(ch,1))=" " )  AND ch <> "" Then     
	                     
			newfile.Write(ch)				''''If we dont do that then the first character wont be on the file  
			newfile.WriteLine
		
		End If

	wend

	newfile.Close
	invfile.Close

	set invfile = nothing
	set newfile = nothing

	set listdir = nothing

	Main = DTSTaskExecResult_Success

End Function

Wie ihr selbst feststellen könnt ist dieser Code dazu erstellt worden um die Leere Zeilen zu löschen und die Zeilen die mit " DATETIME" beginnen... Leider passier nichts wenn ich es laufen lasse... Da habe ich mir gedacht dass etwas Falsch ist. Hat da irgendjemmand eine Iddee????

Set invfile = listdir.OpenTextFile((DTSGlobalVariables("temppath").Value), 1) ''''TEMPPATH = "C:\TEXT.TXT" DER GANZE PATH DER DATEI
Set newfile = listdir.CreateTextFile((DTSGlobalVariables("filename").Value)) '''FILENAME = '"TEXT.TXT" NUR DER NAME DER DATEI

Hier muss ich etwas anderes machen. Habe schon ein paar Sachen verändert zb.
Set newfile = listdir.CreateTextFile(("c:\new_text.txt"))
und bekomme die Nachricht dass dieser Path nicht existiert. Aber ich will keine neue Datei erstellen sondern die Datei die ich habe korigieren (Leere Zeilen löschen und die Datetime)... Irgendwie komme ich aber nicht weiter....

Dann zum letzten Schritt :


'**********************************************************************  
'  Visual Basic ActiveX Script  
'************************************************************************  

Function Main()

    Dim dt
    Dim yyyy
    Dim mm
    Dim dd

dt = Date

	yyyy = DatePart( "yyyy",  dt)  
	mm = DatePart( "m",  dt)  
	dd  = DatePart( "d",  dt)  
	
	If len(mm) = 1Then 	mm = "0" & mm 	End If  
	If len(dd) = 1Then 	dd = "0" & dd	End If  

	dt= yyyy&mm&dd


	Set listdir = CreateObject("Scripting.FileSystemObject")  

	listdir.copyFile DTSGlobalVariables("temppath").Value,  DTSGlobalVariables("finalpath").Value + "inv_" + left(DTSGlobalVariables("filename").Value, len(DTSGlobalVariables("filename").Value)-4) + "_" + dt + ".txt"     

'''''''TEMPPATH = "C:\TEXT.TXT" , 'FILENAME = '"TEXT.TXT",  FINALPATH =  "C:\OLD_FILES\"  

	listdir.deleteFile DTSGlobalVariables("temppath").Value	  

	Main = DTSTaskExecResult_Success
End Function
------------------------------------------

Das ganze funktioniert prima, aber wenn ich am gleichen Tag mehr als eine Datei bekomme (die haben immer den gleichen Namen) dann werden die die es schon in den Order Old_files gibt überschrieben... Das Problem ist aber dass jede Datei die ich erstelle diesen namen heben wird text_20090317.txt also wissen wir den Namen nicht im vorraus und können ihn nicht mit einem If vergleichen....

Vielen dank im vorraus für jede Hilfe.

Julia

Content-Key: 111609

Url: https://administrator.de/contentid/111609

Printed on: April 20, 2024 at 16:04 o'clock