794
צפיות
צפיות
64
תשובות
תשובות
הוספת עמודה לטבלה
יש לי בטבלה לדוגמא את השדות הבאים (באקסס כמובן) :
id = מספור אוטומטי
text1 = טקסט
text2 = טקסט
head = תזכיר
text3 = טקסט
שאלתי היא, האם אוכל להוסיף לדוגמא שדה חדש העונה לשם text4 באמצעות טופס ASP פשוט ?
64 תשובות
בוודאי
קרא
תודה רבה אחי . למרות זאת לא מפורט..
לא מפורט כי סוגי השדות שבאמצעות הטופס אוכל להזין .
לדוגמא אני רוצה לצור עמודה בשם Text2 בטבלה myTable שתהיה מסוג תזכיר , איך אוכל לעשות זאת ?
בדוגמא שהוספת רואים כיצד לצור עמודה מסוג טקסט עד 100 תווים –
יש לך מדריך יותר מפורט עם כל הסוגים ?
תודה רבה בכל מקרה אחי. ..
חפש בקבצי העזרה של אקסס
data types ותמצא את כולם
ותזכיר זה Memo ואם זה לא עובד אז פשוט Text
האקסס שלי בעברית :/
מצאתי את כל "סוגי הנתונים" אך כולם בעברית …
אתה יכול לתרגם לי אותם למאפיינים שיעבדו בסקריפט ?
1. תזכיר
2. מספר
3. תאריך/שעה
4. מטבע
5. מספור אוטומטי
6. כן/לא
7. אובייקט OLE
8. היפר-קישור
9. אשף בדיקת מידע
תודה, מת עליכם 🙂
מתוך ה-ACCESS
קובץ מצורף
מתוך 4 העמודות המופיעות בדף
למה עליי להתייחס ?
תתייחס לכותרת
"Microsoft Jet SQL data type"
תודה 🙂 עוד שאלה אם אפשר
בלי כל קשר להוספת/מחיקת עמודה .
כאשר אני ממלא טופס להוספת נתונים לתוך מסד נתונים אקסס ואני משאיר שדה כלשהו ריק, מופיעה לי שגיאה.
איך אפשר לתת אופצייה להשאיר שדה ריק מבלי לקבל שגיאה – ושבמסד נתונים אותו שדה ישאר ריק ?
ברשימת השדות להכנסה לא לכלול אותו
INSERT INTO tbl(<list of fields to insert>) VALUES(<values to insert>)
אבל אני רוצה לאפשר לו להכניס נתון
אני רוצה שלמשתמש יהיה אופצייה להכניס נתון לתוך המסד אך במידה והשדה ישאר ריק, לא יוכנס נתון.
אם אני אסיר אותו מן הרשימה לשדות להכנסה – גם אם המשתמש יקליד נתונים הם לא יוכנסו למסד.
אז יש לך את האפשרות שאני עשיתי
בגלל שלא מצאתי פתרון לבעיה שיש לך.
ניתן לעשות משפט תנאי לכל שדה ולבדוק אם הוא ריק/אפסי, ככה:
If Len(field) = 0 Then field = Null
זה אמור לתקן את השגיאה, כלומר להכניס ערך אפסי (ריק) לשדה שבטבלת המסד.
OK , תודה 🙂 אם זה יעבוד אודיע לך .
סליחה על הבורות
עפ"י ועפ"י נאמר כיצד
לצור את הסקריפט שיצור טבלאות/עמודות או ימחוק .
רציתי לדעת, כיצד אוכל לצור טופס ASP פשוט שדרכו אוכל להוסיף לדוגמא עמודות או לדוגמא להוסיף טבלה וכל מאפייניה .
מוסבר כיצד יוצרים אך לא מוסבר כיצד אפשר ליישם זאת באמצעות טופס.
תוכל לעזור לי ?
אתה יכול לעשות שהתוכן שאתה שולח
דרך הטופס הוא השאילתה שלך.
למשל:
Conn.Execute Request.Form("SQL")
אם לזה התכוונת.
עקרונית
הייתי שמח אם מישהו היה מכין לי כאן סקריפט תבניתי לטופס ולסקריפט מאחורי הטופס שיצור/ימחוק טבלה או עמודה .
גם קישור למקום שמציע דבר זה יתקבל בברכה 🙂
יש את האפליקציה של מנהל מסד הנתונים
שאפשר למצוא כאן:
אפשר לבצע בו:
* יצירת טבלה
* העתקת טבלה
* מחיקת טבלה
* יצירת שדות
* מחיקת שדות
* הרצת שאילתות בעמוד (באמצעות שדה Textarea)
* דחיסת מסד נתונים
שאלה אחרת …
נושא : גישה למסד נתונים מסוג אקסס .
בסקריפט הבא שלי ישנה דרישה לערך עבור המשתנה fid .
במידה ואני מסיר אותה (באקסס המשתנה מוגדר כ"מספור אוטומטי") ואני שולח טופס עם יתר הנתונים מלבד fid הוא מדפיס לי שגיאה.
הנה הסקריפט :
fid=request.form("fid")
fname=request.form("fname")
fdesc=request.form("fdesc")
Dim DataConn, CmdUpdateRec, MYSQL
Set DataConn = Server.CreateObject("ADODB.Connection")
Set CmdUpdateRec = Server.CreateObject("ADODB.Recordset")
DataConn.Open "DBQ=" & Server.Mappath("../../../_private/forum.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
MYSQL = "SELECT forums.* FROM forums WHERE (fid = " & fid & ")"
CmdUpdateRec.Open MYSQL, DataConn, 1, 3
CmdUpdateRec.Fields("fid") = fid
CmdUpdateRec.Fields("fname") = fname
CmdUpdateRec.Fields("fdesc") = fdesc
CmdUpdateRec.Update
CmdUpdateRec.Close
Set CmdUpdateRec = Nothing
DataConn.Close
Set DataConn = Nothing
Response.redirect "default.asp"
End Sub
עכשיו שאלתי היא, כיצד אוכל לשלוח טופס מבלי צורך בשדה של fid והזנתו, אלא שהfid יקבל מספור אוטומטי מבלי חובת הזנת ערך בטופס למשתנה זה ??
אגב, הסקריפט שהוספתי …
הוא פעולת העריכה לרשומה שלי.
הנה הסקריפט של הוספה :
Sub newone
fid=request.form("fid")
fname=request.form("fname")
fdesc=request.form("fdesc")
Dim DataConn, CmdAddRec, SQL
Set DataConn = Server.CreateObject("ADODB.Connection")
Set CmdAddRec = Server.CreateObject("ADODB.Recordset")
DataConn.Open "DBQ=" & Server.Mappath("../../../_private/forum.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
SQL = "SELECT forums.* FROM forums where fid=" &fid
CmdAddRec.Open SQL, DataConn, 1, 3
CmdAddRec.AddNew
CmdAddRec.Fields("fid") = fid
CmdAddRec.Fields("fname") = fname
CmdAddRec.Fields("fdesc") = fdesc
CmdAddRec.Update
' closing objects and setting them to nothing
' not neccesary but a good habit
CmdAddRec.Close
Set CmdAddRec = Nothing
DataConn.Close
Set DataConn = Nothing
Response.redirect "default.asp"
End Sub
חשבתי על תחכום, עזרו לי ..
החלטתי שבסוף אני אגדיר את הfid כמספר ובטופס הוספת נתונים שדה
הfid יופיע.
אך אני מעוניין שבעצם השדה יכלול 2 דברים :
1. תחום הASP – יתבצע חיפוש עד למספר הגבוה ביותר שנמצא בעמודת הfid במסד שלי, ויתווסף מספר אחד לקיים.
דוגמא ברורה : נגיד יש לי 55 רשומות, הfid של האחרון הוא 55, אני רוצה בעצם שהמסד יחפש את המספר הגבוה ביותר ויוסיף לו אחד – מה שאומר שאני רוצה שאוטומטית בשדה בטופס שלי ירשם 56.
2. תחום הHTML/JS – ארצה ששדה טקסט בטופס שלי לא יהיה פעיל. כלומר, לא יוכלו לשנות את הערך בתוך השדה.
תודה , מקווה שתעזרו לי אחים/אחיות שלי !
הנה הפתרון הפשוט ביותר…
פתח את הטבלה שלך באקסס ובהגדרת השדה FID תבחר ב"מספור אוטומטי" ותעשה אותו מפתח ראשי.
זה יעשה שבכל פעם שתוסיף רשומה אז הערך יעלה ב-1.
בהוספת ובעריכת הרשומות אתה לא משתמש ב-FID, כלומר אינך עורך או מוסף לו ערך מאחר והוא שדה לקריאה בלבד.
כך עשיתי , אך בכל זאת שגיאה
איזו שגיאה מופיעה לך ?
הסרת את השורה שמוסיפה/מעדכנת את שדה ה-ID (מספור אוטומטי) ?
בוודאי . הנה פרטים
קודם כל בסקריפט שלי, הנה החלק שמבקש את שדה הFID (שורה ראשונה):
fid=request.form("fid")
fname=request.form("fname")
fdesc=request.form("fdesc")
הנה משפט הSQL שלי, הוא דורש את הFID כמובן :
SQL = "SELECT forums.* FROM forums where fid=" &fid
והנה השגיאה בעת שליחת הטופס :
Syntax error (missing operator) in query expression 'fid='.
fid=empty, כלומר הוא ריק אז כמובן
שתהיה לך שגיאה.
מה אתה מדפיס בשדה ה-FID שכתוב בטופס ?
אולי תציג את הקוד הרלוונטי לבעיה ?
פספסת משהו…
אם באקסס הגדרת את fid כמספור אוטומטי, אז לא צריך להוסיף אותו, אלא הוא מתווסף לבד. לכן, במקום לרשום את זה:
request.form("fid")
תרשום את זה:
rs("fid")
במקום rs תרשום את שם הרקורדסט שלך….
לילה טוב 🙂
תיקון…
במקום rs תרשום CmdAddRec
אני מניח שהוא מעוניין לעדכן נתונים
לפי השאילתה והוא מקבל את ערך ה-FID (הרשומה אותה הוא מעוניין לעדכן) מהטופס בתוך שדה טקסט לקריאה בלבד.
וחשבתי שאני המוזר..
שעוד לא הלך לישון <בהתחשב בעובדה שלא יצאתי…>
אכן שניכם מוזרים
אני רגיל לישון בבוקר ולקום בבוקר
המאוחר….
קבלו תיקון – ושוב שגיאה
שוב אותה שגיאה.
הנה הסקריפט שתיקנתי על פי מה שאמרתם :
Sub newone
fid=Request.QueryString("fid")
fname=request.form("fname")
fdesc=request.form("fdesc")
Dim DataConn, CmdAddRec, SQL
Set DataConn = Server.CreateObject("ADODB.Connection")
Set CmdAddRec = Server.CreateObject("ADODB.Recordset")
DataConn.Open "DBQ=" & Server.Mappath("../../../_private/forum.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
SQL = "SELECT topics.* FROM topics where fid=" &fid
CmdAddRec.Open SQL, DataConn, 1, 3
CmdAddRec.AddNew
CmdAddRec.Fields("fname") = fname
CmdAddRec.Fields("fdesc") = fdesc
CmdAddRec.Update
' closing objects and setting them to nothing
' not neccesary but a good habit
CmdAddRec.Close
Set CmdAddRec = Nothing
DataConn.Close
Set DataConn = Nothing
Response.redirect "default.asp"
End Sub
השגיאה מאשימה את משפט הSQL שלי ..
השגיאה בטח מצביעה על
הפתיחה של הרקורדסט?!
כי אם כן אז אני מניח שזה לא על השאילתא אלא על הארגומנט השלישי (שכחתי את שמו)
CmdAddRec.Open SQL, DataConn, 3, 3
הנה השגיאה
Syntax error (missing operator) in query expression 'tid='.
מצביעה על השורה :
CmdAddRec.Open SQL, DataConn, 1, 3
אההה… אתה בטוח שזה לא מצביע על משפט הSQL אלא על הCmdAddRec ?
אם כן, מה הבעיה אז?
ערך ה-tid ריק ולכן מופיעה שגיאה
תציג את השאילתה שלך.
הצגתי 30 פעם אחי 🙂
פשוט תראה בתגובות הקודמות …
ה-FID באמת מתקבל מה-QS או
שהוא מתקבל דרך הטופס?
אוקיי אבל בכל מקרה, ערכו של tid ריק
ובגלל זה אתה מקבל את השגיאה.
אם תעשה משפט תנאי כזה:
If Len(tid) = 0 Then tid = 0
או אם זה על fid ולא tid אז לא תקבל שגיאה של משהו בשאילתה כי יש ערך לאותו משתנה.
הQS לא מתקבל מהטופס .
בטופס שלי אין שדה להוספת FID .
ומצטער על הבלבול אחים שלי, זה fid פשוט הייתה לי טעות אך מופיעה כמובן אותה שגיאה.
הבנתי כי השגיאה אומרת בעצם שהfid שלי ריק, וזה צפוי כי הוא לא מופיע בטופס שלי.
אז איך אוכל לבנות את קטע קוד שיוסיף לי רק את הנתונים fname, fdesc ?
אני מאשים את הwhere במשפט הSQL שלי .. זה קשור?
השאלה הייתה
אם FID מופיע בשורת הכתובת?!
אם לא פשוט תוסיף שדה נסתר (hidden) בטופס שעשית
<input type="hidden" name="fid" value="<% =fid %>" />
(את החלק של ה-VALUE תתאים לקוד שלך)
סליחה על ההעקה
מה להכניס בValue ? אני רוצה ששליחת נתונים מטופס
תצור אוטומטית את הFID החדש לאותו טופס ..
fid הוא לא מספור אוטומטי ??
אם כן, הכוונה שלך זה ליצור אותו ?
מה אתה בדיוק מנסה לעשות עם אותו ערך של ה-FID?
fid הוא מספור אוטומטי כמובן
אני מנסה להכניס נתונים בלי קשר לFID כי מן הסתם
שדה זה לקריאה בלבד והבנתי שלא אוכל להכניס אליו נתונים.
אך בכל זאת, מופיעה אותה שגיאה ..
יש קשר לWHERE בתוך משפט הSQL שלי לשגיאה ?
כן יש שגיאה והיא בגלל שערכו של
fid ריק.
תוסיף משפט כזה לפני השאילתה:
If Len(fid) = 0 Then fid = 0
זה יציב 0 ב-fid במידה והוא ריק.
אם לא עשית משפט תנאי שבודק אם אין רשומות להצגה אז תופיע שגיאה בנוגע ל-EOF ו-BOF, אחרת לא יהיה מה להציג.
מה שאני מנסה לומר כאן הוא שערכו של FID שאתה שלחת מהטופס או מנסה לקחת משורת הכתובות ריק, אפסי, לא מכיל שום ערך כלשהו.
אוקיי עשיתי כך, שגיאה חדשה
להלן הסקריפט המתוקן שלי :
Sub newone
tid=request.form("tid")
tname=request.form("tname")
tbody=request.form("tbody")
tauthor=request.form("tauthor")
If Len(tid) = 0 Then tid = 0
Dim DataConn, CmdAddRec, SQL
Set DataConn = Server.CreateObject("ADODB.Connection")
Set CmdAddRec = Server.CreateObject("ADODB.Recordset")
DataConn.Open "DBQ=" & Server.Mappath("../../../_private/forum.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
SQL = "SELECT topics.* FROM topics where tid=" &tid
CmdAddRec.Open SQL, DataConn, 1, 3
CmdAddRec.AddNew
CmdAddRec.Fields("tname") = tname
CmdAddRec.Fields("tbody") = tbody
CmdAddRec.Fields("tauthor") = tauthorCmdAddRec.Update
' closing objects and setting them to nothing
' not neccesary but a good habit
CmdAddRec.Close
Set CmdAddRec = Nothing
DataConn.Close
Set DataConn = Nothing
Response.redirect "default.asp"
End Sub
והנה השגיאה החדשה שמצביעה על השורה המודגשת בקוד למעלה.
Item cannot be found in the collection corresponding to the requested name or ordinal.
תיקון קטן
בגלל ההדגשה הCmdAddRec.Update קפץ לי שורה למעלה…
אל תתייחסו לזה
השגיאה אומרת
שה-ITEM (השדה) לא נמצא באוסף השדות (ז"א לא נמצא בטבלה שבנית)
בדוק אם היא קיימת, ובדוק אם האיות נכון
עובד !!!!! תודה לכולם !!!
איזו הקלה ……………..
מת עליכם : BuildHome , ניר המלך וטל אורנשטיין !! פשוט גדולים
שמחתי להיות לעזר, בהצלחה בהמשך
עורך הטקסט WYSIWYG
כאשר אני משלב עורך טקסט בטופס ASP שישלח לתוך מסד נתונים מסוג ACCESS , איזה נתונים ישלחו בדיוק אם בכלל ?
כלומר, מה יופיע לי אם אפתח את בסיס הנתונים שלי לאחר הוספת המידע ? אני אראה בתוך אותו שדה תגיות HTML שהWYSIWYG יצר ?
תודה 🙂
כן, זה מה שצריך לקרות.
שאלה נוספת ..
אני בונה מגזין.
המגזין יחולק ל2 טבלאות : פינות ודפים .
בטבלת הדפים הוספתי שדה ששמו p_id – לפי שדה זה אוכל לקשר בין הרשומה לפינה בטבלת הפינות.
עכשיו משפט הSQL שלי נראה כך :
SQL = "SELECT fpages.* FROM fpages where p_id=" ?
? = הID של הפינה שלי מתוך הטבלה השנייה (טבלת הפינות) . לפי תחילת משפט הSQL שלי ישנו קישור לטבלת הדפים (fpages) – איך אוכל לחלץ מתוך הטבלה pinot את הID ?
מקווה שהבנתם 🙂
מפחד שהסתבכתם .. קבלו הסבר
יש לי בטבלה אחת רשומות שונות. שם הטבלה : fpages .
יש לי טבלה שנייה עם רשומות שונות. שם הטבלה pinot .
הוספתי שדה שבאמצעותו אוכל לסדר את הרשומות שלי מתוך הfpages לפי כל ID של פינה (מן הטבלה pinot) .
אני רוצה דף לדוגמא של הפינה "מגזין" בו כל הרשומות בהן בשדה p_id בעצם הID של הפינה "מגזין". נגיד שהID של ה"מגזין" הוא 1 .
אני רוצה שכל הרשומות בהם p_id הוא 1 בטבלת הfpages – יסודרו בדף ה"מגזין" .
לא ממש הבנתי אותך
תציג קצת קוד לפני השאילתה וקצת אחרי…מה שרלוונטי כרגע.
בנוסף, תסביר יותר במפורט והיטב בנוגע לשליפת הנתונים מהשאילתה שכתבת.
אתה נכנס לעמוד מסויים עם ערך ID של משהו או סתם עמוד המציג רשומות בלולאה?
אגב, להבא – שרשר שאלותיך
אולי עכשיו הבנתי אותך קצת…
אם הבנתי אותך נכון אז אתה צריך לעשות שאילתה של הטבלה הראשונה ואז להתחיל לולאה.
בתוך הלולאה אתה יוצר שאילתה שנייה עבור הטבלה השנייה שמצריכה ID מהטבלה הראשונה ואז ככה תציג נתונים, בלולאה נוספת או רק רשומה אחת.
מקווה שהבנתי אותך.
שרשר שאלותיך
הודעות לא משורשרות ימחקו!
לא שרשרתי בגלל
שראיתי לפני איזה כמה אשכולות נושאים שרשמת שהנושא ארוך מדי ולפתוח חדש עם השאלות החדשות, אז הסקתי שכדאי לפתוח חדש כדי לא לעמיס :/
שטויות
בכל מקרה תמיד לשרשר (אלא אם נגיד אחרת)
הבעיה הראשונה נפתרה, כעת דבר חדש
הבעיה שלי נפתרה ,
הצלחתי לבנות פינות (ואפשרות להוספת/עריכת פינות) ובתוך הפינות אפשרות לצור דפים חדשים בכל פינה.
יש לי 2 טבלאות : טבלת הפינות pinot וטבלת הדפים fpages .
כעת אני רוצה לבנות תפריט באתר שלי שיראה כך :
יוצג כותרת של פינה ומתחת לכותרת כל השמות של הדפים של (fname בתוך טבלת הfpages) .
וכמובן שבתפריט יוצגו כל הכותרות של הפינות ומתחת לכל הכותרות השמות של הדפים הקשורים לאותה פינה.
מה שבעצם אני רוצה לעשות זה חילוץ מ2 טבלאות.
חילוץ ראשון : שמות הפינות (שדה pname בטבלת pinot) – ומתחתיו :
חילוץ שני : שמות הדפים הקשורים לאותם פינות (fname בטבלת fpages).
נ.ב – אני מקשר בין הדפים לפינות באמצעות שדה בטבלת הדפים ששמו p_id (בעצם בשדה זה אני מזין את הID של הפינה מטבלת הפינות).
אז איך אוכל לבנות תפריט זה ?
הנה הרעיון הכללי לביצוע הדבר
אתה עושה שאילתה ששולפת את כל הפינות ומתחיל לולאה.
בתוך הלולאה אתה עושה שאילתה נוספת שהסוף שלך נראה כך:
…… where p_id = " rs("id")
רק צריך להבין את העיקרון.
לאחר מכן אתה עושה עוד שאילתה של כל הרשומות (הדפים) השייכים לאותה פינה לפי ה-ID הנוכחי שנמצא בלולאה.
מקווה שהסברתי היטב.
תיקון..בשאילתה שכחתי לשים & לפני rs
ראה קובץ מצורף
אז אתה מעוניין
שברגע שלוחצים על שם הפינה הקישורים שלה יפתחו מתחתיה ?
אם זאת כוונתך אז עליך להשתמש ב-XMLHTTP
והשאילתא הבאותו עמוד תהיה רק על טבלת הפינות ושליפה גם של ה-ID
במדור ASP במאמרים למתקדמים יש מאמר של צוות האתר על XML HTTP בצד הלקוח (מה שאתה צריך)
יש לי ניסוח חדש ופשוט יותר
במשפט SQL שלי אני רוצה לשלוף את כל הנתונים מטבלת fpages כאשר שדה הp_id שלי (מטבלת הfpages) שווה ל- שדה הpinot_id מטבלת הpinot.
אני לא מצליח לעשות את זה, ניסיתי כך :
בתחילה בקוד בראש הדף כאשר פתחתי את טבלת הpinot הגדרתי כי הpinot_id שווה לעצמו. כך :
Dim pinot_id
pinot_id = Request("pinot_id")
כעת שפתחתי את טבלת הfpages בחלק התחתון של הדף (עוד לא סגרתי את חיבור הpinot) הנה המשפט שלי :
<%
Dim Conn1, rsCatalog1
Set Conn1 = Server.CreateObject("ADODB.Connection")
Conn1.Open ConString
Set rsCatalog1 = Conn.Execute("SELECT * FROM fpages where p_id=" &pinot_id)
While Not rsCatalog1.EOF
%>
ומופיעה לי שגיאה ..
מופיע לי הנתון הראשון שרציתי מטבלת הpinot ומתחתיו מופיעה לי שגיאה במקום רשימת הדפים :
Syntax error (missing operator) in query expression 'p_id ='.
הבנתי שבעצם אין שום נתון בp_id אז איך אוכל לעשות זאת ?
הקפצה 🙂