Jump to content
  • הצטרפו למשפחה

    היי, היי אתה (או את) שם!

    אנחנו יודעים, נחמד להיות אנונימי, ולמי בכלל יש כוח להירשם או להיות עכשיו "החדשים האלה".

    אבל בתור חברי פורום רשומים תוכלו להנות ממערכת הודעות פרטיות, לנהל מעקב אחרי כל הנושאים בהם הייתם פעילים, ובכלל, להיות חלק מקהילת הרכב הכי גדולה, הכי מגניבה, וכן - גם הכי שרוטה, באינטרנט הישראלי. 

    אז קדימה, למה אתם מחכים? בואו והצטרפו ותהיו חלק מהמשפחה הקצת דפוקה שלנו.
     

dir="rtl" style="text-align:right;"> שימו לב! השרשור הזה בן 5136 ימים, שזה ממש ממש הרבה ולכן הוא ננעל.

אם אתם פותחי השרשור ו/או יש לכם עדכון רלוונטי לנושא - פנו לאחד המנהלים ונפתח את השרשור חזרה לתגובות.

פוסטים מומלצים

פורסם

נתחיל מזה שיש לי רקע מאוד קלוש בתכנות..

מצאתי במקרה את הסקריפט הבא, שהמטרה שלו זה לכווץ מסד נתונים של אקסס 2003 שמתנפח כל כמה ימים.

המסד מוגן ע"י סיסמא ולכן אי אפשר להשתמש בסוויץ' compact/ של אקסס

הבעיה שהוא קופץ עם שגיאת סינטקס (error 800a0400) בשורה 35, תו מס' 5.

השורה מודגשת באדום. תו מס' 5 זה הגרשיים.

 

 

Dim jtPrivEngine

Dim strSource

Dim fso



strSource = "C:\Temp\MyDatabase.mdb"



'Use the JET engine and create a file scripting object

Set jtPrivEngine = CreateObject("JRO.JetEngine")

Set fso = CreateObject("Scripting.FileSystemObject")



'Delete any left over files

If fso.FileExists(strSource & ".jro") = True Then

   fso.DeleteFile strSource & ".jro"

End If



'Compact the file

jtPrivEngine.CompactDatabase _

[color=Red]   "Provider=Microsoft.Jet.OLEDB.4.0" & _[/color]

       ";Data Source=" & strSource & _

       ";Jet OLEDB:Database Password=SomePassword", _

   "Provider=Microsoft.Jet.OLEDB.4.0" & _

       ";Data Source=" & strSource & ".jro" & _

       ";Jet OLEDB:Database Password=SomePassword"



'Rename the original file (this keeps the original in case problems arise)

fso.MoveFile strSource, strSource & "." & Year(Now) & _

                                         Month(Now) & _

                                         Day(Now) & _

                                         Hour(Now) & _

                                         Minute(Now) & _

                                         Second(Now)



'Rename the compacted file to the original

fso.MoveFile strSource & ".jro", strSource

ניסיתי כמה דברים אבל מן הסתם חסר לי את הרקע בתכנות, אשמח לעזרה!

למכירה המערכת שלי -Focal, Nakamichi, Xetec, Eclipse...

פורסם

כמו כן, מצאתי קוד דוגמה דומה באתר של אופיס, שלא נתקל בשגיאה הזו:

 

 

Public Sub CompactAndEncrypt()
    Dim je As New JRO.JetEngine     
' Make sure that a file doesn't exist with the name of    
' the compacted database.    
If Dir("C:\Program Files\Microsoft Office\" & _
      "Office\Samples\Northwind2.mdb")  "" Then Kill _       
"C:\Program Files\Microsoft Office\Office\Samples\Northwind2.mdb"     
' Compacts and encrypts version Northwind database.    
je.CompactDatabase _    
"Provider=Microsoft.Jet.OLEDB.4.0;" & _       
"Data Source=C:\Program Files\Microsoft Office\" & _       
"Office\Samples\Northwind.mdb", _    
"Provider=Microsoft.Jet.OLEDB.4.0;" & _       
"Data Source=C:\Program Files\Microsoft Office\" & _       
"Office\Samples\Northwind2.mdb;" & _    
"Jet OLEDB:Encrypt Database=True"  
End Sub

 

את השורת אנקריפט כמובן אני לא צריך ואפשר להחליף ב DatabasePassword כמו בקוד המקורי.

למה פה זה עובד ובמקורי לא? מה ההבדל ביניהם?

למכירה המערכת שלי -Focal, Nakamichi, Xetec, Eclipse...

פורסם

אם להשוות לקוד שעובד, נראה שחסר לך את הנקודה פסיק שמשלימה את הביטוי.

תנסה להחליף את השורה ב

  "Provider=Microsoft.Jet.OLEDB.4.0;" & _

 

 

אגב, מצטער שהרעיון שהעלנו בה"פ לא יצא לפועל, אנשים פה עסוקים מדי כנראה...

פרויקט חדש, מאור יוצא להתחרות - עקבו כאן

Toyota MR2, 1985 - Sold | Renault-Sport Clio RS (203), 2011 - Black – Sold | Subaru Impreza STI, 2003 -Java Black- Sold

Alfa-Romeo Mito QV, 2011 - Tornado blue - Sold |BMW E30 Coupe, 1989 - Alpine white - Sold

פורסם

זה לא זה, ניסיתי כבר.

ניסיתי גם להדביק את החלק של הקוד שמתחיל בje.compactdatabase בקוד המקורי וזה עובד, אך אני רוצה לשמור על הפונקציה של הקוד המקורי ששומרת עותק של המסד וכו'.

בנוסף בהמשך זה נתקע עם אותה שגיאה בשורה 47 בקטע של התאריך. מה שמוזר שזו שורה ריקה!

 

*לא נורא, היה נחמד מצידך בכל מקרה :wink:

למכירה המערכת שלי -Focal, Nakamichi, Xetec, Eclipse...

פורסם
...בנוסף בהמשך זה נתקע עם אותה שגיאה בשורה 47 בקטע של התאריך. מה שמוזר שזו שורה ריקה!...

 

עשית העתק/הדבק ישירות לקוד? אם כן, יכול מאוד להיות שהעתקת תווים שאתה לא רואה כמו ה crlf

תעתיק קודם למסמך טקסט, צמצם רווחים מיוצרים ואז תדביק לסקריפט ותריץ.

 

זה שלך השורה נראית ריקה, זה לא אומר שהיא ריקה באמת.

פורסם

אני מנסה את הסקריפט לאחר צמצום במחשב שעליו מיועד לעבוד - ומקבל אותה שגיאת runtime

"800A01AD - ActiveX component can't create object: "Scripting.FilesSystemObject

ביצעתי רישום regsvr32 ל DLL של mdac

ולDLL של vbscript

השורה היא זו שמתחילה בSet fso =

תו מס' 1.

 

עריכה: לאחר קריאה על התפקיד של Scripting.FilesSystemObject אני מבין שמדובר בעניין של הרשאות למערכת הקבצים - איך אני יודע להיכן לתת לו הרשאות? ולמי בדיוק?

 

עריכה 2: שיניתי ל server.CreateObject ועכשיו זה קפץ שורה קודם לjro.jetengine

עם אותה שגיאה ממקודם, שם הוספת server לא עזרה.

יש רעיון?

למכירה המערכת שלי -Focal, Nakamichi, Xetec, Eclipse...

פורסם

את זה פתרתי כבר עם צמצום רווחים.

עכשיו אני קצת מבולבל - במחשב שלי כשהוספתי server לפני השורה הבעייתית (ירוק), זה עזר וקפץ לשורה לפני(אדום). במחשב שאני עובד עליו מרחוק ושם הוא מיועד לרוץ זה לא עוזר! מה זה יכול להיות?

בנוסף אם אני שם לפני אותה שורה On error resume next - הוא מריץ חלקית את הסקריפט(במחשב המרוחק), כלומר זו השגיאה האחרונה שהוא נתקל בה.

 

 

Dim jtPrivEngine 

Dim strSource

Dim fso

strSource = "somewhere on server"
'Use the JET engine and create a file scripting object

[color=Red]Set jtPrivEngine = CreateObject("JRO.JetEngine")[/color]
[color=Green]Set fso = CreateObject("Scripting.FileSystemObject")[/color]

'Delete any left over files
If fso.FileExists(strSource & ".jro") = True Then
   fso.DeleteFile strSource & ".jro"
End If
'Compact the file
jtPrivEngine.CompactDatabase _
  "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
     ";Data Source=" & strSource & _
     ";Jet OLEDB:Database Password=some pw", _     
  "Provider=Microsoft.Jet.OLEDB.4.0;" & _
     ";Data Source=" & strSource & ".jro" & _    
     ";Jet OLEDB:Database Password=some pw"
'Rename the original file (this keeps the original in case problems arise)
fso.MoveFile strSource, strSource & "." & Year(Now) & _
                                         Month(Now) & _
                                         Day(Now) & _
                                         Hour(Now) & _
                                         Minute(Now) & _
                                         Second(Now)
'Rename the compacted file to the original
fso.MoveFile strSource & ".jro", strSource

למכירה המערכת שלי -Focal, Nakamichi, Xetec, Eclipse...

פורסם

מה השגיאה הנוכחית?

באיזו שורה?

מהי השורה?

על איזה שרת אתה מריץ את זה?

האם אתה מריץ קובץ VBS? או אולי דף דינמי?

בתור איזה משתמש? האם בדקת את ההרשאות של הדף/קובץ? {לחצן ימני, כבר תמצא את זה שם}

פורסם

אותה שגיאה בתגובה מס' 7:

"800A01AD - ActiveX component can't create object: "Scripting.FilesSystemObject

השורה בירוק.

השרת הוא Server 2003 SP2 32bit

זהו קובץ VBS פשוט, מתזמן אותו דרך מתזמן המשימות.

המשתמש שמקבל את השגיאה הוא אדמין בכל הרשת, אותו יוזר לא מקבל את השגיאה במחשב האחר שמריץ XP SP3, שם הסקריפט עובד.

יש לי הרשאות מלאות לקובץ - בירושה מהתיקיה הראשית. לא בירושה - אותו דבר. בשני המקרים האדמין הוא הבעלים של הקובץ.

 

כמה נקודות מעניינות:

  • אם אני שם Option Explicit בראש הסקריפט - הוא עובד במחשב הנייד שלי, אך זה לא משפיע בשרת.
  • אם אני משנה את CreateObject ל Server.CreateObject זה עובד אצלי, ושוב לא עובד בשרת.

אצלי זה Win7 - האם מדובר בגרסאות שונות של VB או משהו אחר?

למכירה המערכת שלי -Focal, Nakamichi, Xetec, Eclipse...

×
×
  • תוכן חדש...