ش | ی | د | س | چ | پ | ج |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
CreateObject : ADODB.STREAM
With AdoStream
.Charset="UTF-8"
.Type=2 'text
.Open
.WriteText "xcfg"
.SaveToFile "D:\C.txt",2
Str=.ReadText
End With
AdoStream.Close
Set AdoStream=Nothing
.LoadFromFile FileName
طریقه دیگر نوشتن یا خواندن یا اضافه کردن به فایل تکست :
Create Object : Scripting.FileSystemObject
Set Object to Fso Variable
With Fso
در متد باز کردن تکست عدد یکی از Mode ها در آرگومان قرار گیرد و همینطور در Create یا فایل موجود است یعنی True یا False است و پیش فرض False می باشد.
.OpenTextFile FileName,Mode(Read:1,Write:2,Append to End:8),Create(True or False )
نوشتن در فایل تکست اگر Mode هشت باشد به انتهای آن اضافه می کند.البته یونیکد فارسی پشتیبانی نمی شود
.Write "xcfgjj"
.Close
End With
این آبجکت FileSystemObject متد CreateTextFile نیز دارد برای ساخت فایل تکست.
The OpenAsTextStream method provides the same functionality as the OpenTextFile method of the FileSystemObject. In addition, the OpenAsTextStream method can be used to write to a file
متد OpenAsTextStream مثل OpenTextFile است دقیقا آرگومانهاش و نوشتاری تابع بعلاوه اینکه این متد می تواند روی هر فایلی بنویسید.( Write)
The AtEndOfStream property applies only to TextStream files that are open for reading; otherwise, an error occurs.
ویژگی AtEndOfStream فقط به فایل های TextStream قابل اعمال است که برای Reading باز می شوند در غیر اینصورت خطا اتفاق می افتد.چک می کند که در انتهای فایل Stream است یا خیر اگر باشد True را بر می گرداند.
Set ObjFile=ObjFso.OpenTextFile(FileName,1,0)
Do While ObjFile.AtEndOfStream <> True
ret=ObjFile.ReadLine
Loop
str=ObjFile.ReadAll
ObjFile.Close
فرض کنید یک فایل تکست تهیه شده در آن سطرهایی درج شده و هر سطر شامل چندین فیلد است با جداکننده مثل سمی کالن ( برای تکست در فایل تکست دو کوتیشن قرار داده شده که با دستور insert into به راحتی به جدول اضافه شوند و خطا نگیرید) ، سطرها می شود همان رکوردشما هر سطرهم با Enter از هم جدا شده اند حال می خواهید فایل تکست خوانده شود و اطلاعات هر سطر را به جدول اضافه کند. لذا با دو متد بالا می توانید فایل تکست را باز کنید با تابع Split اول سطرها جدا شوند ( جدا شونده می شود vbrclf ) بعد با همین تابع Split یا هر تابعی که نوشتید آیتم های هر سطر که آنهم با سمی کالن جدا شده اند را بگیرید . شماره فیلدها در جدول از صفر شروع می شود و به تعداد کل منهای یک ختم می شود . اگر قراره که تکراری نگیره خوب ID رو پرایمری کی کنید در جدول تا قبول نکنه .
Text File :
1200,'Mike','London'
1201,'Jefer','London'
Table :
ID,SurName,City
Preserve copies the elements from the old array to the new array. It is possible to resize an array without losing the existing values by using the Preserve keyword. When you use Preserve you can only change the size of the upper bound (not the lower bound).
Preserve عناصر را از آرایه قدیمی به جدید کپی می کند.این امکان را بوجود می آورد تا هر آرایه ای را بدون از دست دادن مقادیر موجود با استفاده از لغت Preserve دوباره اندازه بدید.زمان استفاده از این کلمه کلیدی فقط سایز محدوده بالایی تغییر می کند یعنی پائینی صفر می ماند یا عدد تعریف شده برای شروع و عدد حد بالایی اضافه می شود.
تصویر زیر نمونه ای از یک جداکننده است ، البته نام تابع باید Separator باشد ولی تابع Split همین عمل را انجام میدهد احتیاج به نوشتن چنین تابعی نیست.
برای اضافه کردن تکست ، حتما باید بین دو کوتیشن باشد وگرنه اکسس خطا می دهد. با اجرای کوئری اپند زیر با توجه باینکه فایل تکست منطبق بر تعداد فیلد در جدول است به راحتی به جدول اضافه می شوند و اگر ID که پرایمری کردید تکراری بود به جدول اضافه نمی شود. ( فیلد های MultiValued و یا Attachment را نمی توان در کوئری Append و Make Table استفاده کرد منجر به خطا می شود.)
StrSQL="Insert Into TableName (ID,SurName,City) Values (" & Str & ")"
میشود که تابع تصویر را گسترش داد که بغیر از آرگومان های گرفتن رشته و جداکننده که اجباریست ، تعداد کل آرایه و مقدار هر کدوم بصورت انتخابی اضافه شوند مثلا
Function Separator(S As String,Delim As String,Optional GetTotalNumber As Boolean,Optional Num As Long)
یا کلاس ماژولی نوشت که GetString ویژگیهایی مثل Counter و ... باشد که در همه جا بتوانید استفاده کنید البته یادآوری می کنم تابع Split در اکسس و جداسازی وجود دارد.
Set ColItms=Objwinmgmts.ExecQuery ( _
"Select * From Win32_OperatingSystem")
ObjItms In ColItms
SerialNumber