שלח תשובה

זירת השאלות

480
צפיות
0
תשובות

קוד שנתקעתי בו:

,‏ 21 בינואר, 2004

אני מקווה שאצליח להסביר את עצמי כמו שצריך:
אני משתמש ב- MS-SQL ואני רוצה להוציא נתונים מכמה טבלאות
להכניס נתונים לטבלה מסויימת ובסופו של דבר להוציא את ה- ID האחרון שנכנס לטבלה.
עד היום השתמשתי ב- Transactions בין כל הפעולות האלה, לדוגמא הקוד הבא:

conn.open dsn

SQL = "SELECT TOP 1 … FROM forumDB"
SQL = SQL & " WHERE …"
SQL = SQL & " ORDER BY …. desc"
conn.BeginTrans
rs.Open SQL, conn
if not rs.EOF then
… = rs("…")
end if 'rs.EOF

rs.close

'–
'הכנסת כל פרטי ההודעה לבסיס הנתונים
SQL = "INSERT INTO forumDB (…,…,..,…,…,…,…,)"
SQL = SQL & " VALUES("
SQL = SQL & "" & …
SQL = SQL & ",'" & …
SQL = SQL & "'," & …
SQL = SQL & "," & …
SQL = SQL & "','" & …
SQL = SQL & "',getdate(),getdate())"
conn.execute (SQL)

'–
'במידה וההודעה מכילה מעל 10 תוים היא מוקפצת לראש
'הפורום
if Len(…)>=10 then
SQL = "UPDATE forumDB SET ….=getdate()"
SQL = SQL & " WHERE ….=0"
SQL = SQL & " AND ….='"&….&"'"
conn.execute (SQL)
end if 'Len(….)>=10

SQL = "SELECT MAX(message_id) AS intMaxID FROM forumDB"
rs.Open SQL, conn
conn.CommitTrans
if rs.EOF then
message_id = -1
else
message_id = rs("intMaxID")
end if 'rs.EOF


rs.Close
conn.close


עכשיו כאשר אני משתמש במשפט הבא:

" SELECT intMaxID = @@identity"


אני מקבל שגיאה! רק כאשר אני מוריד מהקוד את כל Transactions הכל עובד כמו שצריך.

הבעיה היא שאני חייב להשתמש ב- Transactions על מנת למנוע שגיאות בלתי רצויות, יש למישהו מושג כיצד אני מחבר בין השניים?

תודה רבה על הזמן, נעם

תגיות:

0 תשובות

    שלח תשובה