אקסס|vba שימוש בresponsetext בשביל למלאות טופס
-
אני עושה בקשת HTTP בקוד VBA ,
אני מצפה לקבל חזרה JSON עם מספר נתונים,
למשל
ID=1
NAME = צביאני רוצה לעשות טופס שימלא בתיבת טקסט לבד את האופציות האלה, ויתן אופציה לערוך את חלקם,
(כשאני לוחץ על כפתור של פתיחת הטופס, יהיה שאילתה מאחורי הקלעים [את זה כבר עשיתי, כמו שמופיע פה] ואז שיפתח טופס שחלקו ניתן לעריכה כמו NAME וחלקו לא כמו ID אבל שהכל יוצג, רק שחלק לא יהיה ניתן לעריכה)
הכל נמצא ב XMLHTTP.responsetext
רק לא הצלחתי למצוא איך אני מגדיר לו למלאות לפי זה את הטופס
הסתבכתי בזה קצת, אשמח למידע, קישור להסבר וכו' -
@ארי אמר באקסס|vba שימוש בresponsetext בשביל למלאות טופס:
אתה צריך להשתמש בקוד שמחלץ מחרוזת JSON, ואז זה די פשוט להכניס את הערכים לשדות.
תראה כאן אני חושב שזה הקוד שהופך JSON לאובייקטים.אני מצליח להפוך לערכים,
אני לא מצליח להכניס אותם אחרי זה בטופס חדש. -
@ארי אמר באקסס|vba שימוש בresponsetext בשביל למלאות טופס:
@צבי-ש תראה את הקוד שלך.
מבוסס כולו כרגע על מה שכתבתי פה
https://tchumim.com/topic/13007/לתועלת-הציבור-קובץ-אקסס-לסליקה-באשראי-דרך-נדרים-פלוס?_=1657139354384
עכשיו אני רוצה לקבל מאתר אחר ולא מנדרים פלוס,
ולשלב את זה בטופס חדש. -
@ארי אמר באקסס|vba שימוש בresponsetext בשביל למלאות טופס:
@צבי-ש אתה נתקע רק בהכנסה של הנתונים לטופס, לא?
אז תצרף את הקוד הרלוונטי.אין לי שום קטע קוד מזה,
אני רוצה לפתוח טופס עם ערכים ברירת מחדל שמוכנסים כבר, רק שאת הערכים האלו אני רוצה לקבל מהבקשת HTTP שעשיתי מקודם
אז אין לי כלום, זה סתם טופס ריק עם שדה טקסט -
@צבי-ש אתה צריך לחלץ את הערכים שקיבלת בתגובה.
לשם כך אתה צריך להמיר את מחרוזת ה-JSON לאובייקט, שיחזיק את כל הערכים. לא ברור מהתשובה שלך האם עברת את השלב הזה.
אם כן, כעת זה פשוט:
אם אתה שומר את הערכים של האובייקט בטבלה, פשוט תבסס את הטופס עליה ותפתח אותו ברשומה המתאימה.
אם אתה לא שומר את הערכים, אתה צריך לאתחל את הפקדים של הטופס עם הערכים. למשל באירוע הטעינה של הטופס:Private Sub Form_Load() me.txtFirstName = firstName me.txtLastName = lastName .... End Sub
-
אני יצאתי מבולבל לגמרי מעצמי,
אני צריך לעשות טופס שלוקח ID&PHONE
שולח לשרת , מקבל ערכים רבים, ומציג אותם בטופס כאשר את חלקם ניתן לערוך וחלקם לא,
את החלק של השליחה בלבד אני עושה כך:Dim XMLHTTP Dim Result As String Dim argumentString "id=" & id & "&phone=" & phone Set XMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0") XMLHTTP.Open "POST", _ "www.domain.xom", False XMLHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded; charset=UTF-8" XMLHTTP.send argumentString Result = XMLHTTP.responsetext Set XMLHTTP = Nothing
אשמח לעזרה מהרגע הזה ואילך,
כי פה התחלתי להסתבך -
@צבי-ש אמר באקסס|vba שימוש בresponsetext בשביל למלאות טופס:
אשמח לעזרה מהרגע הזה ואילך,
אחרי השורה:
Result = XMLHTTP.responsetext
המשתנה
Result
מכיל את התגובה שקיבלת.
התגובה מתקבלת כמחרוזת JSON. זו דרך לייצוג אובייקט המכיל ערכים רבים, באמצעות מחרוזת אחת ויחידה, המכילה זוגות של מפתח-ערך. תהליך זה נקרא: סריאליזציה.
אתה לא אמור לשלוף ישירות את הערכים מהמחרוזת, אלא להמיר אותה בחזרה לאובייקט. זה התהליך ההפוך הנקרא: דיסריאליזציה.
כמש"כ לעיל:אתה צריך לחלץ את הערכים שקיבלת בתגובה.
לשם כך אתה צריך להמיר את מחרוזת ה-JSON לאובייקט, שיחזיק את כל הערכים. לא ברור מהתשובה שלך האם עברת את השלב הזה.