עבור לתוכן

איך אני קורא מתוך שאילתא בקובץ mdb דרך asp ?

Featured Replies

פורסם

יש לי קוד asp שהורדתי מהאינטרנט שקורא מתוך טבלה את הרשומות ומציג אותן על דף האינטרנט...

אך אני רוצה שהוא יקרא מתוך שאילתא, האם זה אפשרי ?

תודה

פורסם

כן בדיוק אותו דבר

בקובץ ה- mdb אתה מגדיר את השאילתה שלך בשם Query1 למשל:

select ID, Name, Salary From Table1

ובדף ה- asp שלך אמור להיות פתיחה של המסד בעזרת אובייקט Adodb.Connections

ולאחר מכן בקשת שאילתה מהשאילתה המוכנה בעזרת אובייקט Adodb.Recordset

שמשפט שלו יראה משהו כמו

rs.Open ("Query1",cn1,2,3)

פורסם
  • מחבר

איפה בדיוק לשים את זה בקוד הזה ?

var messages=new Array()

<%
dim sql_mess,fcount,rs_mess
set rs_mess=server.CreateObject("ADODB.recordset")
sql_mess="select * from main"
rs_mess.Open sql_mess,conn,3
fcount=rs_mess.RecordCount

פורסם

במשתנה שלך

sql_mess

בתוך הגרשיים אתה שם במקום מה שכתוב , את שם ה- Query כפי שקראת לו ב- Access כאשר יצרת אותו

פורסם
  • מחבר

ניסיתי את זה, כי זה היה נראה די ברור,

אבל זה פועל רק עם טבלאות, שם של שאילתא לא מניב כלום...

האם יכול להיות שהוא מציג רק טבלאות כי הוא לא יכול להציג שאילתה עם קריטריונים

פורסם

ניסיתי את זה, כי זה היה נראה די ברור,

אבל זה פועל רק עם טבלאות, שם של שאילתא לא מניב כלום...

האם יכול להיות שהוא מציג רק טבלאות כי הוא לא יכול להציג שאילתה עם קריטריונים

כן , לא ציינת שהשאילתה מקבלת פרמטרים, אז הטיפול קצת אחר, בגדול זה נראה משהו כזה

<%
set cn1 = Server.CreateObject("Adodb.Connection")
set cmd1 = Server.CreateObject("Adodb.Command")

    cn1.Open "xxx"
    cmd1.ActiveConnection = cn1
    cmd1.CommandText = "Query1"
    cmd1.CommandType = 4
    cmd1.Parameters.Append cmd1.CreateParameter("שם השאילתה", adInteger, adParamInput, , 2)
    Set rs1 = cmd1.Execute
    Do While rs1.EOF = False
        Response.Write (rs1.Fields("שם שדה להדפסה").Value)
        rs1.MoveNext
    Loop
    rs1.Close
    cn1.Close

%>

שים לב לקבועי מערכת adParamInput ו - adInteger שבאים עם הספריה של ADODB אבל לא מוכרים ב- ASP ולכן אתה צריך להגדיר קובץ include או שתפתח ב- Excel את ה- VBA ותראה שם מהם הקודים לכל אחד מהקבועים האלו ותחליף בתכנית שלך את שמות הקבועים בקודים המתאימים

פורסם
  • מחבר

וואוו,

זה נראה די מסובך,

אולי יש לך קישור לקוד מוכן כזה ?

אני פשוט צריך משהו כזה ולא מכיר דרך אחרת לעשות את זה...

פורסם

לא אין לי , זה לא כ"כ מסובך האובייקט command הוא פשוט אובייקט שמאפשר לשלוח שאילתה לשרת ה- database עם פרמטרים

תגיד לי איזה פרמטרים יש אצלך ומה סוג הנתונים שלהם (string או int ) ואני אגיד לך איך הפקודה תראה ספציפית למקרה שלך

פורסם
  • מחבר

כעקרון יש לי טבלה עם נתונים על אנשים, ביניהם ימי הולדת,

השאילתא מציגה את האנשים שיש להם יום הולדת השבוע...

כך שהנתונים זה שם ותאריך...

פורסם

זה כל הסיפור ? אז תבכלל לא צריך להסתבך בקוד , תחזור לקוד הקודם הפשוט שאתה מכיר

ואת הלוגיקה שישלוף ימי הולדת שחלים השבוע תעביר לאחריות ה- Database

בהנחה שאתה עובד עם Access הקוד הבא אמור לעבוד ולשלוף תמיד תאריכים שהשבוע שלהם חל בשבוע הנוכחי

ב- DB אחרים יש פתרונות דומים רק שהקוד נראה מעט שונה

SELECT 
Table1.ID,
Table1.Name,
DatePart("ww",[Date]) AS Week_Of_BDay,
DatePart("ww",Now()) AS Week_Of_Today
FROM
Table1
WHERE
DatePart("ww",[Date]) = DatePart("ww",Now());

פורסם
  • מחבר

הנה הקוד עם מאגר הנתונים,יש שם 2 טבלאות messages שתציג הודעות עם הקוד שמצ"ב ו - birthday שבה אמורים להיות כתובים השמות...

אני באמת מצטער שאני משגע אותך, אבל אני לא יודע איפה לכתוב את כל מה שציינת בקוד asp...

שוב תודה...

ומצטער על כל הטרטור...

[attachment deleted by admin]

פורסם
  • מחבר

אשמח אם מישהו יוכל לעזור לי...

תודה :'(

פורסם

ללא צורך בהעברת פרמטרים, ה- Database מחשב לבד את התאריכים שנופלים השבוע

בדף ה- ASP


<%@Language=VBScript%>
<%
option explicit

dim cn1
dim rs1
dim html1

set cn1 = Server.CreateObject("ADODB.Connection")
cn1.Open("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\db1.mdb;Mode=Share Deny None")
set rs1 = Server.CreateObject("ADODB.Recordset")
rs1.Open "Query3",cn1,0,1
html1 = "<table border=1>"
do while rs1.EOF = false
html1 = html1 & "<tr>"
html1 = html1 & "<td>" & rs1.Fields("message_txt").Value & "</td>"
html1 = html1 & "<td>" & rs1.Fields("Date").Value & "</td>"
html1 = html1 & "<td>" & rs1.Fields("מספר").Value & "</td>"
html1 = html1 & "</tr>"
rs1.MoveNext
loop
html1 = html1 & "</table>"
Response.Write html1
rs1.Close
set rs1 = Nothing
cn1.Close()
set cn1 = Nothing
%>

ב- Database את בונה 2 שאילתות הראשונה המטרה שלה לחשב את תאריכי הלידה כאילו היו השנה ובאיזה שבוע הם נופלים השנה , תקרא לה למשל Query2:

SELECT birthday.message_txt, birthday.Date, birthday.מספר, DateSerial(Year(Now()),Month([Date]),Day([Date])) AS ThisYearDate, DatePart("ww",ThisYearDate) AS ThisYearWeek
FROM birthday;

השאילתה השניה תקרא לה Query3 המטרה שלה לבחור מתוך Query2 רק את התאריכים שהשבוע שלהם נופל על השבוע הנוכחי

SELECT Query2.message_txt, Query2.Date, Query2.מספר, Query2.ThisYearDate, Query2.ThisYearWeek
FROM Query2
WHERE (((Query2.ThisYearWeek)=DatePart("ww",Now())));

הכל על סמך הקובץ ששלחת

פורסם
  • מחבר

תודה רבה רבה לך !!!!

אני אנסה את הקוד ואראה אם זה מצליח, הכל לפי הקבצים שלי, נכון ?

זה פשוט copy paste לכל מה שכתבת פה.... כן ?

שוב תודה !

אתה בן אדם נהדר ! :yelclap:

פורסם

לא בריא להגדיר שדות ב- database בעברית, כדאי שתשנה את זה

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים