צפיות
תשובות
שאלה חשובה… וקלה למי שיודע
זה הקוד שלי
<%
fid = request.querystring("fid")
set conn = server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("guides/guides.mdb") & ";"
sub closeConn
conn.close
set conn = nothing
end sub
%><%
set guideRs = server.createobject("adodb.recordset")
guideRsSql = "select * from guide order by id desc"
guideRs.open guideRsSql,conn,3,1
if not guideRs.eof then
guideRsGetRows = guideRs.getrows
for iguide = 0 to ubound(guideRsGetRows,2)
fid = guideRsGetRows(0,iguide)
nameguide = guideRsGetRows(1,iguide)
nameid = guideRsGetRows(2,iguide)
namesub = guideRsGetRows(3,iguide)
namefull = guideRsGetRows(4,iguide)
namedate = guideRsGetRows(5,iguide)
%>
ואני רוצה לדעת בעיקרון איך אני יכול ליבחור מוך המסד נתונים נגיד namefull
רק 40 אותיות מתוכו?
יש פונקצייה כלשהי ואני שכחתי אותה
17 תשובות
ככה:
SELECT mid([namefull],1,40) AS namefull FROM….
למה לא להשתמש ב-LEFT ?
אפשר… אין הבדל.
רגע לא הבנתי משהו…
רגע לא הבנתי משהו אני אמור עכשיו ליפתוח עוד רקורדסט?
מה אין משהו אחר לעשות?
לא, רק את זה…
לשנות את השורה הזאת.
guideRsSql = "select * from guide order by id desc"
לשורה הזאת
guideRsSql = "SELECT mid([namefull],1,40) AS namefull FROM guide order by id desc"
רק שפץ את השאילתא איך שאתה צריך אותה.
אהה… תודה אחי
לא עובד תיראה…
הנה הקוד
guideRsSql = "SELECT mid([namefull],0,40) AS text_full FROM guide order by id desc "
guideRs.open guideRsSql,conn,3,1
זה נותן לי את השגיאה הזאת
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
/talg1/de/index.asp, line 232
אתה אולי יודע מה הבעיה
רשום את זה אולי…
במקום namefull את שם השדה שלך שהוא טקסט.
מזאת אומרת ככה:
guideRsSql = "SELECT mid([text_full],0,40) AS text_full FROM guide order by id desc "
guideRs.open guideRsSql,conn,3,1
ואם על זה אתה מדבר אז ניסיתי וזה לא טוב מוזר
מה לא מובן?
כתוב במקום ה-[namefull] את השם של השדה במסד שלך
נו….
ה text_full זה השם שבמסד נתונים
guideRsSql = "SELECT mid([text_full],0,40) AS text_full FROM guide order by id desc "
guideRs.open guideRsSql,conn,3,1
והנה כל הקוד
<%
fid = request.querystring("fid")
set conn = server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("guides/guides.mdb") & ";"
sub closeConn
conn.close
set conn = nothing
end sub
%><%
set guideRs = server.createobject("adodb.recordset")
guideRsSql = "SELECT mid([text_full],1,40) AS text_full FROM guide order by id desc "
guideRs.open guideRsSql,conn,3,1
if not guideRs.eof then
guideRsGetRows = guideRs.getrows
for iguide = 0 to ubound(guideRsGetRows,2)
fid = guideRsGetRows(0,iguide)
nameguide = guideRsGetRows(1,iguide)
nameid = guideRsGetRows(2,iguide)
namesub = guideRsGetRows(3,iguide)
namefull = guideRsGetRows(4,iguide)
namedate = guideRsGetRows(5,iguide)
%><%=namesub%>
אבל זה לא עובד זה רושם שגיאה משהו של פרמטר 1
זה מאוד פשוט
אחרי השורה הזאת:
namefull = guideRsGetRows(4,iguide)
תוסיף את השורה הזאת:
namefull=left(namefull,40)
זהו!
שתי הדרכים שהציעו כאן
היעילה (לדעתי)
שליפת ה-40 האותיות הראשונות ישירות מהמסד.
זה מצריך ממך לכתוב את כל רשימת השדות ולא את ה-* (שלדעתי זה טוב בכל מקרה)
וכך זה הולך
SELECT LEFT([field_name],40) AS other_name, <other_fields> FROM tbl
field_name – השם של השדה במסד
other_name – שם חדש של שדה שלא מופיע בטבלה שממנה אתה שולף
הפחות יעילה (לדעתי)
לשלוף רגיל כמו שעשית ולבצע את ה-LEFT ברמת ה-ASP
namefull = Left(guideRsGetRows(4,iguide),4)
—————————————————————————
LEFT – פונקציה שחותכת טקסט עד נקודה מסוימת
עוד במדריך ה-VBS שבאתר
—————————————————————————-
שלא תחשוב שאני לא רוצה לעזור אני פשוט לא הבנתי את דבריך נכון
מצטער שוב 
…
guideRsSql = "SELECT mid([text_full],1,40) AS text_full FROM guide order by id desc "
guideRs.open guideRsSql,conn,3,1
אבל גם לזה יש בעיה
כי המילה נחתכת אחרי 40 האותיות הראשונות כלומר זה יכול לצאת ככה
"החלטנו לצאת לשטח ולב"
כשזה אמור להיות
"החלטנו לצאת לשטח ולבדוק"
זה מה שהוא ביקש
את 40 האותיות הראשונות. כדי לעשות 40 מילים ראשונות הוא הצטרך קצת "להתאמץ" (נראה לי צריך ליצור איזה פונקציה במסד שתעשה את זה)