עבודה מול ACCESS

eMaster

New member
עבודה מול ACCESS

אני מעוניין לבצע שאילתת INSERT (אני משתמש בOLEDB) ולדעת מה הID של השורה החדשה שהוכנסה (הID הוא שדה אוטומטי) זה INSERT לטבלאת משתמשים, ויכולים להכנס משתמשים גם במקביל... איך עושים זאת (זו אפליקצית אינטרנט)?
 

סומבודי

New member
בלתי אפשרי ישירות באקסס

אך קיים טריק: הקצה שדה נוסף בטבלה שבו תזין מידע הייחודי לאובייקט שיצר את השורה, והוסף לשאילתת היצירה את הפרמטר המתאים. לאחר יצירת השורה, תוכל לאחזר אותה באמצעות המזהה הנ"ל.
#1. INSERT TO someTable(creatorId) VALUES([cid]) #2. SELECT id FROM someTable WHERE creatorId = [cid]​
 

eMaster

New member
שאלה נוספת בOLEDB

ראיתי שיש בOLEDB עבודה עם טרנזקציות... ראיתי גם שזה נועל,על ידי ניסוי פשוט שניסיתי. השאלה שלי, האם משהו עבד עם זה? משהו יודע מה זה באמת עושה? את מה זה נועל? וכו'...
 

gilad g

New member
צר לי לחלוק עליך, זה אפשרי מאוד ../images/Emo13.gif

קודם מבצעים את השאילתה:
insert into bla values (...)​
ואז עושים שאילתת select בעזרת psuedocolumn ששמו @@identity, לקבלת ה-ID החדש שנוסף:
select @@identity from bla​
פשוט מאוד
 

gMaster2004

New member
פוס ,עמודו! הסבר

את ה@@Iidentity, אני מזהה כפטנט דומה שיש בSQLSERVER.. אבל איך אני צריך לבצע את השאילתה הזו? בטרנזקציה? לכתוב אותה באותה שורה שאני שולח (אולי ע"י הפרדה של ;?) כי יכול להיות שבין השורה הראשונה משהו אחר יבצע את הINSERT שלו, ואז הIDENTITY הזה לא שווה כלום... שאלה 2, אני משתמש כאילו בSTORED PROC בACCESS (על ידי הQUERIES שם), האם אפשר לעשות QUERY INSERT ואח"כ את הSELECT הזה?
 

eMaster

New member
שאלה מצויינת, אבל...

זו בדיוק היתה השאלה ממקודם, איך אני יכול לוודא שהזהות שאני אקבל שייכת לINSERT שנעשה לפניה (אני מדבר על אפליקצית רשת)? ולא למשהו שבדיוק קיבל הרשאה לטבלא הכניס שורה חדשה ויצא...?
 

סומבודי

New member
שאלה זו כבר נענתה, במחילה

השיטה שציינתי גם חד משמעית יותר מאשר SLEECT @@IDENTITY.
 
עיינתי בטרנזקציה ויש שם אפשרויות

נעילה\בידוד(isoleted) שונות, כנראה שאם זה ניתן לוודאות.
 
@@IDENTITY

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