ASP ואקסס...

ASP ואקסס...

לפני שתסקלו אותי, כן, אני משתמש בשתי הטכנולוגיות בשביל אתר אינטרנט, ישנות, אבל זה קל יותר מלשכתב קוד שלם.. ולשאלה שלשמה התכנסנו - יש לי שני קבצי mdb של אקסס 2000. יש לי קובץ ASP אחד. איך אני מבצע העתקה מקובץ אחד לאחר של טבלאות ושל נתונים? שאילתת insert עם select נשמעת רעיון מצוין; רק שלא הצלחתי להבין איך אני מחבר ado connection אחד, לאחר. דוגמה:
conn1.execute "insert into XXX " & conn2.execute("select * from xxx")​
ברור שזה לא עובד... אך מה כן? הערה: נסיון לבצע ריצה דינמית על שמות הטבלאות - ומשם לפור לתוך שמות השדות נכשל בשלב של הזנת הנתונים. התקבלה הודעה שאומרת: Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done. אשמח לכל עזרה.
 

גרי רשף

New member
לדעתי זה לא יעבוד ככה..

או שתיצור שאילתה בקובץ A שמציגה נתונים מקובץ B (ואז השאילתה שלך תרוץ על קובץ A בלבד), או שתעבור בלולאה בעזרת ADO ותקרא בכל פעם רשומה מ-A ותכתוב ל-B (מאוד לא יעיל). לא עולה בדעתי אפשרות אחרת, ואשמח לשמוע מה העלית בחכתך..
 
הצלחתי לפתור את זה..

הפתרון לא מושלם, כי צריך לעבור עליו עם מסננת של פילטרים והוא דורש הכרות עם מסד הנתונים. ז"א - לא לחלוטין אוטומטי... פסאודו: השדה ID הועף כי מדובר בשדה של מספור אוטומטי, וזה זורק שגיאת OLEDB ובאופן כללי: אני מושך את הסכמה של מסד הנתונים, רץ עליה עם לולאה.. בתוך כל טבלה אני מושך את שמות השדות, תוך כדי עדכון שלהם.. די פשוט, רק שממש צריך להזהר עם זה.
conn1 = source... conn2 = dest.... rs=conn1.openSchema... do while not rs.EOF if rs("TABLE_TYPE")="TABLE" and rs("TABLE_NAME")<>"extras" then conn2.Execute "DELETE * FROM " & rs("TABLE_NAME") rs1.Open "SELECT * FROM " & rs("TABLE_NAME"),conn1, 3,3 rs2.Open "SELECT * FROM " & rs("TABLE_NAME"),conn2,3,3 do while not rs1.EOF rs2.AddNew for each tmp in rs2.Fields if tmp.name <> "id" then rs2(tmp.Name).Value = rs1(tmp.Name).Value end if next rs1.MoveNext loop rs2.UpdateBatch rs1.Close rs2.Close end if rs.MoveNext loop​
 

גרי רשף

New member
לא מומלץ בבסיסי נתונים גדולים

לעבור כך על מיליון רשומות יהיה מעט איטי.. היה ער לכך!
 
יש פתרון!

כאשר אתה פתוח בקישור לבסיס נתונים אחד, ניתן לגשת באקסס לבסיס נתונים אחר בצורה הבאה:
SELECT * from tbl in 'C:\data\filename.mdb'​
אתה יכול עם זה לבצע שאילתת הוספה לטבלה מקומית המתבססת על נתונים הנמצאים בבסיס נתונים אחר
 
עד כמה שידוע לי

הפתרון שלך הוא בגישת DAO ואני עובד עם ADO (לקוח גדול עם דרישות מפורטות, לא יכול לשנות) בכל מקרה אנסה(שוב).. תודה
 
למעלה