דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
clickoneC

clickone

@clickone
אודות
פוסטים
3.4k
נושאים
114
קבוצות
0
עוקבים
15
עוקב אחרי
0

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • עמודת קובץ מצורף SQL SERVER
    clickoneC clickone

    @ארכיטקט

    שלום
    אחד הדברים המעניינים באקסס 2007 ומעלה זה עמודת קובץ מצורף, שמתנהגת בדיוק כמו שדה קבצים מצורפים באימייל. ככל שניסיתי למצוא לזה פתרונות ב SQL SERVER או MYSQL וכדומה, הדברים מתוסבכים למכביר.
    יש כאן איזה מדריך נחמד, אם אין ברירה צריך לצלול למושגי הבינאריזציה, אבל אם מישהו יודע על משהו פשוט ופשטני, אשמח לשמוע.

    אתה מתכוון בתוך אקסס עם ODBC?

    אני השתמשתי ברעיון דומה כדי לשמור תמונות של חתימה.
    הטבלה:

    USE [neot]
    GO
    
    /****** Object:  Table [dbo].[tblBinary]    Script Date: 16/02/2014 12:46:50 ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE TABLE [dbo].[tblBinary](
    	[ID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
    	[FileName] [nvarchar](255) NULL,
    	[binary] [image] NULL,
    	[FileNote] [nvarchar](255) NULL,
    	[IDS] [nvarchar](50) NULL,
    	[IDType] [int] NULL,
    	[cTime] [timestamp] NULL,
     CONSTRAINT [PK_tblBinary] PRIMARY KEY CLUSTERED 
    (
    	[ID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    
    GO
    

    קוד להכנסה לטבלה:

    Dim fd As New FileDialog
    fd.DialogType = DialogOpen
    fd.Filters.Add "*.Jpg|*.Jpg", "*.Jpg|*.Jpg"
    If fd.Show = 0 Then Exit Sub
    Me!img.Picture = fd.SelectedItems(1)
    
        Me!FileName = fd.SelectedItems(1)
    
         Dim streamADO As New ADODB.stream
        streamADO.type = adTypeBinary
     streamADO.Open
     streamADO.LoadFromFile fd.SelectedItems(1)
     Me!binary = streamADO.Read
    

    קוד להכנסת התמונה לתיבת תמונה (באותה שיטה אתה יכול לשמור את הקובץ)

    Me!img.PictureData = Me!binary
    

    פורסם במקור בפורום CODE613 ב16/02/2014 12:50 (+02:00)


  • בעיה עם SQLManagementStudio_x64_ENU.exe
    clickoneC clickone

    @רחמים

    בסוף עשיתי שחזור והמאקרו התחיל לעבוד, אבל בשחזור גם הוסרו עדכונים של וינדוס, וכאשר התקנתי את העדכונים שוב המאקרו הפסיק לעבוד, עברתי על רשימת העדכונים ולא ידעתי מה מבין כולם גורם את הבעיה, בסוף הסרתי את אחד העדכונים לפרימוורק 4.5.1 והמאקרו התחיל לעבוד ת''ל. :smile:

    לא פעם ראשונה שמיקרוסופט מוציאים עידכון שהורס משהו אחר שכבר עובד 😢 😢 😢
    פשוט מעצבן... (אצלי זה קרה פעם שהם עשו את זה במודע, ולא טרחו אפילו לעדכן את צבא המתכנתים הגדול שלהם בשינוי :x )

    פורסם במקור בפורום CODE613 ב17/02/2014 20:25 (+02:00)


  • NULL SQL SERVER
    clickoneC clickone

    אם תעלה את הקוד, יהיה אפשר לומר לך מה אפשר לעשות....

    פורסם במקור בפורום CODE613 ב14/02/2014 14:07 (+02:00)


  • NULL SQL SERVER
    clickoneC clickone

    @שמואל

    יש לי מסד של SQL SERVER
    כאשר אני עושה שאילתת SELECT עם INNER JOIN
    ואחד השדות באחד הטבלאות ריקה הוא לא מציג לי את השורה גם כאשר הJOIN הוא על נתון שאינו NULL

    אולי יש לך WHERE על שדה NULL מטבלת הJOIN?

    פורסם במקור בפורום CODE613 ב14/02/2014 08:29 (+02:00)


  • עדכונים שוטפים מהפורום - קוד פתוח
    clickoneC clickone

    @KingYes

    אני מנסה להבין רגע משהו..
    למה הסקריפט לא יכול פשוט לרוץ בצורה כזאת:
    כל 10 שניות להכנס להוריד למחשב את ה-XML שנוצר בשרת, לעבור עליו.. ואם יש אלמנט חדש.. להציגו. למה צריך בתוך 10 שניות לעשות בדיקה חוזרת כזאת?

    יותר מזה לדעתי, במיוחד שזה RSS בודד, למה הפעולה הזאת לא יכול לעבוד פעם ב-5 דקות לכל המוקדם? 10 שניות זה ממש ממש "להציק" לשרת ולמחשב שלך.

    את האמת יקיר, אני ממש מכור לפורום המדהים הזה, ובודק כל רגע מה התחדש, והRSS הזה ממש עוזר. אם זה יהיה פעם ב5 דקות, אני כבר יעשה ריענון לדפדפן....

    פורסם במקור בפורום CODE613 ב13/02/2014 16:58 (+02:00)


  • עדכונים שוטפים מהפורום - קוד פתוח
    clickoneC clickone

    תודה על השיתוף...
    והנה פרוייקט מוכן המבוסס על מה שרחמים כתב.....
    Code613m.zip

    פורסם במקור בפורום CODE613 ב13/02/2014 12:42 (+02:00)


  • השלמה אוט' כדוגמת "חלק כלשהו" בתיבה משולבת באקסס
    clickoneC clickone

    ממש בשליפה,הייתי עושה כמו בדוגמא שכתבתי לשם כך. (זה יכול להיות יותר גנרי,אבל זה העיקרון.)AutoComplete.accdb

    פורסם במקור בפורום CODE613 ב13/02/2014 10:14 (+02:00)


  • פונקציית StrPtr עושה בעיות ב 64 ביט
    clickoneC clickone

    @ארכיטקט

    @ClickOne
    ארכיטקט, סליחה על הבורות.

    מה הסיבה להשתמש ב64 ביט?
    יותר טוב, או סתם בגלל שזה מה שמותקן אצל הלקוח?
    זה שווה את ניהול 2 הגירסאות? (אפילו שזה לא בקוד אלא בMDE)

    נמאס לי להגיד ללקוחות מה להתקין ומה לא וכולי. מבחינת "ניהול" 2 גירסאות, לא נראה לי שיש כל כך בעיה חוץ מפונקציות API שעושים עם תנאי.
    לפעמים הם מפרמטים את המחשב, ואז הטכנאי מתקין להם אופיס עוד פעם ואז שוב פעם מתקשרים שהתוכנה לא עובדת וכו' אין לי כוח לזה. אז עדיף לי להחזיק 2 גרסאות ברמת הקימפול בלבד וזהו.
    אגב אם מישהו הצליח להבין את המאמרים המצורפים ופשוט להעלות קוד שיפתור את הבעיה, יזכה בפרס שהוא קוד VBA להשלמה אוטומטית של כל הערים והרחובות מדואר ישראל כולל מיקוד חדש בן 7 ספרות...... אם ירצה נתרום את הקוד לקהילה כאן.

    הייתי מאד שמח לעזור ולנסות.... (לא ע"מ לקבל פרס :lol: )
    אבל אין לי 64 ביט....
    מה זה קוד השלמה אוטו' של כל הערים וכו?
    אתה מתכוון לזה?
    ובמיקוד לזה?

    אם תרצה, אני ישמח להעלות קובץ רחובות וערים של רשות הדואר, מהתקופה שהוא היה נותן בחינם את מה שחברות אחרות היו מוכרות בכסף <!-- s8-) --><img src="{SMILIES_PATH}/icon_cool.gif" alt="8-)" title="מגניב" /><!-- s8-) --> , שם יש לכל רחוב ויישוב גם את כל ההטיות והשמות הנרדפים שלו. (לדוגמא: פ"ת, פתח תקווה, פתח תקוה) וכו' -- אבל זה קובץ מעט מיושן - עדכני ללפני שנתיים בערך

    עריכה: כבר נפתר.... ברכות לזוכה המאושר!!

    פורסם במקור בפורום CODE613 ב12/02/2014 19:04 (+02:00)


  • פונקציית StrPtr עושה בעיות ב 64 ביט
    clickoneC clickone

    @magicode

    כנראה זה מה שמותקן לו (לארכיטקט) במחשב.
    אתה רוצה שהוא יתקין 32 רק בשביל זה או אולי מכונה ורטואלית. רק בשביל להחליף utf16 ל utf8 .

    אני לא מאמין שזו הסיבה. (כי אם כן אז הוא מחייב את כלל הלקוחות שלו להיות ב64 ביט ולא נראה לי שזה המצב [יותר אני מאמין שזה הפוך - שיש לו לקוח עם 64 ביט])
    אבל למה רק ארכיטקט? יש כאן בפורום דוגמא למישהו שמתחזק 2 גירסאות 32 ו64...

    פורסם במקור בפורום CODE613 ב12/02/2014 18:23 (+02:00)


  • פונקציית StrPtr עושה בעיות ב 64 ביט
    clickoneC clickone

    ארכיטקט, סליחה על הבורות.
    מה הסיבה להשתמש ב64 ביט?
    יותר טוב, או סתם בגלל שזה מה שמותקן אצל הלקוח?
    זה שווה את ניהול 2 הגירסאות? (אפילו שזה לא בקוד אלא בMDE)

    פורסם במקור בפורום CODE613 ב12/02/2014 17:12 (+02:00)


  • קוד לדוגמא: פנייה ישירה ומהירה לSQL SERVER מאקסס
    clickoneC clickone

    מסכים.
    העובדות היבשות שציינת קוראות תיגר :lol: :lol:
    @דוד ל.ט.

    התשובה האמיתית לאבטחת מידע זה שרת. לא שרת נתונים (SQL SERVER) אלא שרת של התוכנה עצמה. וככה עושים כל הארגונים היום. אבל בתוך הארגון עצמו יש מתכנתים שהם בונים את צד השרת, ולהם יש גישה למסד. איזו גישה? SP... בגלל אבטחת מידע מפני המתכנתים. הם יכולים לעשות רק מה שמצפים שהקוד שלהם יידע, ובנוסף גם מה שהם מורשים מתועד בקלות רבה יותר בגלל שזה SP.

    אם הבעייה היא המתכנתים (אני הבנתי שהבעייה היא משתמשי הקצה - ולא המתכנתים), כי למשתמשים סיכמנו שאין גישה (זה יושב על השרת - ולא משנה איזה (ווב או ווינפורם עם RDP וכו')) אז עדיין אני לא מבין.
    בשביל זה יש מושג שנקרא סביבת ייצור.
    בסביבת הייצור יש נתוני דמה,המתכנתים בונים מה שבא להם, ואין להם גישה לשום מידע רגיש (מלבד למבנה הטבלאות - שזה בעצם כלום כל עוד אתה לא מחובר למסד האמיתי) כשהמתכנתים מסיימים (או מעלים עידכון) מעבירים את הגירסה לשרת האמיתי, ושמנים אתה קונקשיין למסד האמיתי. -- לא אמורה להיות למתכנת גישה לשם בכלל. - אלא לDBA, (ואם אתה כבר לא סומך עליו זו אכן בעייה) אבל אני מניח שלפחות בשב"כ כן עושים להם בדיקה לפני :lol: :lol:

    פורסם במקור בפורום CODE613 ב13/02/2014 12:21 (+02:00)


  • קוד לדוגמא: פנייה ישירה ומהירה לSQL SERVER מאקסס
    clickoneC clickone

    @דוד ל.ט.

    ב. הנחת העבודה שלי היא שזה אפשרי להוציא מחרוזת טקסט מתוך תוכנה כל שהיא לא משנה איך היא קומפלה. יותר מזה, גם כשהמחרוזת איננה ליטרל אלא משתנה, אפשר לגשת לזיכרון של התוכנה או לעקוב אחרי התקשורת של התוכנה ולקבל את הקונקשיין המלא. איך? אני אפי' לא יודע, אבל זה בהכרח אפשרי. האבטחת המידע בקשר לטבלאות המקושרות לא משנה את ההנחה האמורה.

    את זה כתבתי בהדועה שלי. ע"י סניפר אתה יכול לראות כל מה שזז.

    וכמובן שיש גם אסמבלר...

    ובכל מקרה אתה קורה תיגר על הארכיקטורה של האקסס (ולא רק... כמדומני שגם בדוטנט הגישה שמלמדים היא ממש טבלאות בDS, וSP רק כשרוצים לעשות משהו מורכב.) אבל בוודאי שזה מותר לך, ואולי באמת נפתח ע"ז ועל אבטחת מידע בכלל דיון בנפרד בימים הקרובים.
    אני מודה שאתה מעלה כאן נקודה מאד חשובה, ומעניין שלא כ"כ מתייחסים לכך בעולם התיכנות.

    פורסם במקור בפורום CODE613 ב13/02/2014 10:24 (+02:00)


  • קוד לדוגמא: פנייה ישירה ומהירה לSQL SERVER מאקסס
    clickoneC clickone

    @דוד ל.ט.

    שים לב שלבחור שיושב מול המחשב, קל מאוד לעשות מה בא לו עם התוכנה שלך יכולה לעשות מב בא לה. הוא רק צריך לחץ ממנה את הקונקשיין, ותאמין לי שזה לא הכי מסובך. לך אולי זה לא אכפת, אבל יש לקוחות שהמידור במשרדם קריטי.

    אז בא ונבדוק ביחד מה יש לנו.
    לפני שאני מתחיל אני רק רוצה לזכור שבעבר כתבת כאן באחד האשכולות שאתה בעיקרון נוהג לתת בממוצע לא יותר מ5 שדות בטופס.

    אם אני מבין, אתה משתמש רק בSP ולא ח"ו בדאטאסט ודומיהם, אחרת יש גישה לטבלה גם בדאטאסט, לא?

    נתחיל....

    WPF וWINFORMS:
    בWPF יש רפלקטור שיכול להוציא את קוד המקור.
    יתרה מכך, בדוטנט בד"כ הקונקשיין נשמר בAPP.CONFIG.

    אז, אם העובד רוצה,הוא יכול לפתוח את הWPF ברפלקטור, לחלץ את הקונקשיין, אבל משם - אין לו לאן להתקדם. כי הנחת העבודה שלי (וגם שלך בהודעה שלך) היא שהיוזר שאתה מקצה לסביבת העבודה מוגבל ולא יכול לגשת לטבלאות אלא רק לSP מסויימים.
    אני מבין שגם לאורך כל הדרך ככה אתה שולף את הנתונים (בקוד),ואת העידכון אתה מבצע עם הSP.

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

    1. להעתיק את הקונקשיין.
    2. להעתיק דרך הרפלקטור את משפט הSP.
    3. להריץ את זה ממקום אחר ולשלוח בID של היוזר 1 במקום 2. (יש לו הרי שליטה על כל מה שזז.)

    נכון, אפשר להגן ע"ז עם טוקנים וכו', אבל גם הקוד שמייצר את זה דיי חשוף כשאנחנו משתמשים ברפלקטור.
    אז כנראה שגם זה לא כ"כ מאובטח.
    אלא מאי, תגיד לי שיש טבלאות שאני בכלל לא רוצה שהוא יראה, ולכן זה חסום בסביבת העבודה, מנסיון, אתה גם יודע שבד"כ תכתוב גם SP לטבלאות שרק המנהל צריך, והפיתרון שתצטרך לעשות זה עוד משתמש בSQL SERVER בשביל המנהל,וזה סיכמנו שאתה לא עושה.

    עכשיו, בא נבדוק ביחד מה קורה באקסס:
    הקונקשין נשמר בהגדרות הטבלה המקושרת.
    אין רפלקטור לקוד (טוענים שיש איזו אפשרות לראות את הקוד, כמה שחיפשתי וחיפשתי מעולם עדיין לא מצאתי מישהו שמשחזר את הקוד למעט חברה אחת, שרוצה הוכחת בעלות גמורה על הקובץ לפני שהיא עושה את זה.)

    (ד"א, אני דוגל לתת למשתמש את כל השדות שרק יכול להיות, במקום לקבל אלף טלפונים על איזה כפתור ללחוץ כדי לקבל את המידע -- מה שכן, אני מסדר אותם בטאבים)

    אם העובד יצליח לגשת לטבלה המקושרת ולחלץ את הקונקשיין (ותאמין לי שזה לא הכי מסובך), יש לו לכאורה לאן להתקדם.
    הוא יפתח SQL מנג'מנט, ויראה את כל הטבלאות,ומשם הדרך פשוטה לטרור עסקי -- עד מחיקת טבלאות ונקמות.....

    בא ונראה איפה אבטחת המידע:

    1. אני לא שומר שם משתמש וסיסמא בטבלה המקושרת. מי שיצליח לחלץ את הקונקשיין - יהיה לו רק את השרת + שם הDB. (כל השאר לא רלוונטי בחיבור)
    2. החיבור לטבלאות המקושרות מתבצע אחרי הכניסה -- עם שם המשתמש והסיסמא של המסד, ואחרי שאני מוודא שאין לו גישה לטבלאות (כולל שהוא לא יכול להציג אותם ע"י F11)
    3. כל הקוד חסום וסגור ללא אפשרות רפלקטור.

    כל מה שכתבתי כאן זה לגבי חיבור רגיל של ODBC עם אקסס. לגבי הדוגמא שהעלתי לעיל, אני מוסיף גם את הסעיף הבא:
    4. אין טבלה מקושרת. אין איך להוציא את הקונקשיין. כי הוא יושב בתוך הקוד. (לגבי הפחד שמישהוא יריץ את הפונקצייה מבחוץ [זה אפשרי] - אני חושב להכניס אצלי עוד פרמטר של סיסמא פנימית, כדי שאף אחד לא יוכל לבצע את החיבור מבחוץ. [אני עושה את זה כיום כך בריענון של השרת -- בסעיף 2])

    אגב, האובייקט הנ"ל זמין גם בדוטנט וגם בC++ וכו'

    ושכחתי דבר מאד חשוב.
    תמיד יוכלו לשים סניפר ולראות את כל מה שעובר בTCP. אם לזה אתה מתכוון, תכתוב.
    @דוד ל.ט.

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

    1. אכפת לי מאד.
    2. הלקוחות שאני מכיר שהמידור אצלם קריטי - הסיסמא של הכניסה לווינדוס תהיה בד"כ 1234 או משהו דומה. מספרים ומספרים, אבל לא בטוח שהם גם מבצעים.
      אגב מידור קריטי:
      משרד החינוך מספר לנו כבר שנתיים שהוא הולך לשנות את כל הגישה של חיבור מתכנתים למנב"ס, ואחת הדרישות שלהם זו אבטחה מטורפת (אתה קראת לזה: "מידור קריטי") מאד מעניין שדווקא הקובץ של המנב"ס פתוח לעין כל ללא סיסמא או אבטחה מינימלית :x :x

    מתנצל על התגובה הארוכה
    ClickOne

    פורסם במקור בפורום CODE613 ב13/02/2014 00:30 (+02:00)


  • קוד לדוגמא: פנייה ישירה ומהירה לSQL SERVER מאקסס
    clickoneC clickone

    @דוד ל.ט.

    אני לא בסוגיא אז אל תטרח להסביר לי עוד.
    הדברים ששאלת:

    1. SP יותר בטוח במידה ואתה נותן לו הרשאה נמוכה יותר. אם יש לתוכנה שלך הרשאת גישה לטבלאות, המשתמש (לא הלקוח, הבחור מול המחשב, פקיד גיק כזה) יכול לXXX. משא"כ בSP הוא מוגבל למה שהוא מספק.

    דרך העבודה כיום (בניגוד לעבר) היא לא לתת הרשאות ברמת הDB לפי שם משתמש בDB - אלא לתת שם משתמש בודד שיכול לשלוט על הכל, ורק בUI מחליטים לאן הוא ייגש ומה הוא יוכל לעשות.
    אם אתה בדוטנט, (ואתה שם!) אז תשים לב במיוחד במערכת המשתמשים בASPX שכל המשתמשים מנוהלים ברמת הUI ולא ברמת הDB.
    בנוסף, כמובן שלבחור שיושב מול המחשב בחיים, אבל בחיים לא אמורה להיות גישה לטבלאות האחוריות!

    @דוד ל.ט.

    דרך העבודה עם SP זה לא לכתוב את שמו כמו שאילתה, הוא אומר להיות אלגנטי יותר, אני לא יודע עד כמה אקסס תומך בזה, יעויין: http://support.microsoft.com/kb/185125
    בקשר להרגל לSQL הרגיל ובקשר לגמישות אתה חופשי להמשיך זאת בצד המסד, תוך עריכת הSP.

    אקסס לא החשבון כאן, כי הכל עובר כמות שהוא לשרת.
    @דוד ל.ט.

    1. המשל של דוס זה לא לומר שזה קוד שחור אלא שזה נסיון התאמת ישן לחדש. באותו המאמץ שאתה שוקל להשקיע לשנות בתוכנת הענק שלך פה ושם לעבודה מול SQL SERVER דרך הקוד, תעשה את אותו היקף מזערי של עבודה עם כלים מהירים וחדשניים יותר.

    לא נריב. ממש לא היקף מזערי. ואני ממש לא זול בעלות לשעה ללקוח.

    פורסם במקור בפורום CODE613 ב12/02/2014 19:13 (+02:00)


  • קוד לדוגמא: פנייה ישירה ומהירה לSQL SERVER מאקסס
    clickoneC clickone

    @דוד ל.ט.

    ClickOne אם כבר כותבים את השאילתה וקוד, עדיף להפעיל SP מאשר שאילתה.

    לא בחרתי בSP מכמה סיבות.

    1. לSP אם יש פרמטרים צריך לבנות COMMAND וזה כבר לא גנרי.
    2. רציתי להיצמד לאקסס ככל שניתן, כדי שברמה העקרונית תהיה אפשרות ברוב המקרים לשלוף את קוד הSQL ממקור הרשומה של הטופס. (אני זוכר שיש איזה פונקצייה שיודעת "לתרגם" את הפרמטרים הפנימיים של אקסס לערכים מוחלטים [זכרתי משום מה שזה Eval אבל זה לא.]), ואז תהיה אפשרות רק לתת את הטופס והקוד יעשה הכל.
    3. אני לא בטוח שיהיה אפשר אח"כ לערוך את הרשומות כטופס רגיל כמו בדוגמא (לא ניסיתי). אם לא יהיה אפשר, אין טעם לעשות את זה. כל הרעיון של הקוד הזה הוא הגמישות בעריכת הרשומות כמו באקסס רגיל.
    4. למתכנתי אקסס (ואני בתוכם) יש נטייה לכתוב קוד SQL בקוד, שם לא יעזור SP.

    @דוד ל.ט.

    זה יותר בטוח, יותר מהר, ויותר ממודל (המסד האמיתי מהתצוגה).

    יותר מהיר אני מסכים (SP מקומפל בשרת) - אבל לא בטוח שההבדלים מאד גדולים.
    יותר בטוח ויותר ממודל אני ישמח שתסביר למה?
    לא מדובר כאן (לפחות במקרה שלי [לא יודע מה היו הכוונות של ארכיטקט]) על קוד SQL שאמור לעשות מי יודע מה על השרת, אלא רק להחזיר טבלה אחת או יותר, ולאפשר עריכה או תצוגה של הנתונים.

    במידה ואכן צריך להריץ SP אפשר בהחלט להשתמש בפונקצייה השנייה שהבאתי בקובץ - שמריצה כל קוד SQL אפשרי על השרת.

    @דוד ל.ט.

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

    ר' דוד, צר לי, אבל האובייקט RecordSet הוא ליבת המערכת באקסס, ואין כאן קוד "שחור" או"מלוכלך" שמעקם את הכל.
    המחלקה שבה האובייקט הזה יושב היא ADODB - במקור זה הגיע מדוטנט (או התפתח ביחד עם דוטנט) - פשוט זו דרך אחרת לממש חיבור לSQLSERVER דרך ODBC.

    אני מאד מבין את הרצון שנעבור למערכות "מתוחכמות יותר", אבל תבין שכשיש לי פרוייקט עם 40 מודולים , 115 טפסים, למעלה מ80 טבלאות, ולא יודע כמה שורות קוד שכולו מחובר דרך ODBC, אל תצפה שאני יעביר את הפרוייקט לWPF (אין סיבה שהלקוח יסכים לשלם :x ) והצורך לחפש דרכים יותר זריזות וממילא יעילות בטפסים ובדוחות הוא הכרחי.

    פורסם במקור בפורום CODE613 ב12/02/2014 18:14 (+02:00)


  • קוד לדוגמא: פנייה ישירה ומהירה לSQL SERVER מאקסס
    clickoneC clickone

    @ClickOne

    חסרונות:

    א"א להוסיף חדש אם זה שאילתא JOIN עם 2 טבלאות או יותר, לעומת אקסס (כולל ODBC באקסס) שזה אפשרי.

    לאחר מאמצים ובדיקות, גם זה נפתר.
    צריך להוסיף אחרי הפונקצייה שורה שבה קובעים מהי הטבלה הראשית.

    Me.UniqueTable = "TblClsRoom"
    

    הסיבה: כשיש 2 טבלאות הוא לא יודע מהי טבלת האב, אז כשזה טבלאות באקסס, זה מצויין, אבל בשיטה הנ"ל צריך לכתוב לו באופן מפורש מהי הטבלה.
    אחרי שמגדירים את זה, זה עובד מצויין, עם אפשרות הוספה ועריכה בכל הטבלאות המקושרות (ולא רק בטבלה הראשית)

    SetSqlServerRs Me, "SELECT TblClsRoom.IDClsRoom, TblClsRoom.CName,SumProfitPay, TblClsRoom.CTime, TblPayStub.IDPayStub, TblPayStub.psMon, TblPayStub.SumMoitalPay FROM TblClsRoom INNER JOIN TblPayStub ON TblClsRoom.IDClsRoom =  TblPayStub.IDClsRoom WHERE (((TblPayStub.psMon)='1-1-14'));"
    Me.UniqueTable = "TblClsRoom"
    

    פורסם במקור בפורום CODE613 ב12/02/2014 00:02 (+02:00)


  • קוד לדוגמא: פנייה ישירה ומהירה לSQL SERVER מאקסס
    clickoneC clickone

    בהמשך למה שארכיטקט כתב כאן:
    @ארכיטקט

    אפשר עם טופס לא מאוגד, ואז לשלוח את הערכים ל SP דרך שאילתה, כאשר המשתמש לוחץ על "שמור" נניח... יותר פשוט מפשוט, זה אמנם מצריך יותר קוד, אבל עם תכנון טוב, אפשר לעשות את הכל גנרי ולהטיס את זה לשמים!!! תחשוב על הלקוח האומלל שמשלם עשרות אלפי שקלים מיותרים בשביל עבודה עם WPF... טוב אבל לא נחזור לויכוחים הישנים.... :smile: :smile: :smile: :smile:
    מה שכן, בשביל לעדכן חומר בתצוגת גליון נתונים, יש בעיה עקרונית, שפרוצדורה מתנהגת כמו פונצקיה, זאת לא באמת טבלה, זה ככל הנראה ערכים המיוצגים כטבלה, ובזה גם דוט נט לא יעזור לדעתי. צריך לדעת מה השימוש בכל כלי. אין מה לעשות.

    חשבתי רבות מה ניתן לעשות, כי טענתו אכן הייתה טענה טובה, והרעיון שהוא הציע היה נשמע טוב ויעיל.
    בסוף,אחרי מחשבה רבה, יצא לי משהו, ורציתי לשתף אתכם....
    הקובץ:
    Odbc2Sql.zip

    שיטת העבודה היא:
    לבנות טופס עם כל השדות המאוגדים.
    באירוע Open של הטופס לכתוב את הקוד הבא:

    SetSqlServerRs Me, "SELECT * FROM TblStudent;"
    

    כמובן ש: "SELECT * FROM TblStudent;" זה טקסט הSQL שנשלח לשרת.
    שימו לב שמה שנשלח לשרת, צריך להיות קוד נכון בSQL ולא קוד של אקסס (בטבלאות רגילות אין הבדל)

    יתרונות:
    זריז.
    שמירה אוטומטית עם כל האירועים של אקסס (לפני עידכון וכו')
    נותן מס' מזהה מיד ולא רק אחרי שנשמר כמו בODBC באקסס.

    חסרונות:
    צריך לכתוב את הקוד SQL לבד.
    א"א להוסיף חדש אם זה שאילתא JOIN עם 2 טבלאות או יותר, לעומת אקסס (כולל ODBC באקסס) שזה אפשרי.

    **עריכה: הבעייה שא"א להוסיף נפתרה.
    צריך להוסיף אחרי הפונקצייה שורה שבה קובעים מהי הטבלה הראשית.

    Me.UniqueTable = "TblClsRoom"
    

    לפרטים בהרחבה - עיינו בהודעה הבאה.**

    יש רעיונות לשיפורים?

    ד"א יש בקובץ פונקצייה נוספת שהיא:

    ExecSQL ("INSERT INTO TblStudent (Name) VALUES (N'foo'))
    

    פונקצייה זו מאפשרת להריץ כל קוד SQL אפשרי בשרת.

    ותודה לארכיטקט על הרעיון!!!

    פורסם במקור בפורום CODE613 ב11/02/2014 16:50 (+02:00)


  • Sql Server התנהגות מפתח ראשי
    clickoneC clickone

    עדיין מוזר שא"א להריץ טרנזקציה ולומר לו "תכניס מה שאתה יכול ותמשיך" כמו באקסס... (נראה לי שזו הסיבה שבאקסס זה לוקח זמן, כי הוא מריץ את זה בלופ כשזה בODBC)

    עריכה:
    ארכיטקט: אתה יכול בבקשה להעלות את קטע הקוד של ההוספה שנכשל בתוך הפרוצדורה?

    פורסם במקור בפורום CODE613 ב09/02/2014 11:25 (+02:00)


  • Sql Server התנהגות מפתח ראשי
    clickoneC clickone

    @ארכיטקט

    @ClickOne
    השאלה אם כשהוא מייצר שגיאה הוא אכן מכניס את מי שכן מצליח להיכנס לטבלה, ורק זורק שגיאה -- אז מתאים שתשתמש בזה, או שהוא לא מכניס גם את מה שתיקני, ואז אתה צריך לעבור בלולאה ולהכניס אחד אחד עם הTRY.

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

    אתה יכול לבדוק את זה? (פשוט תנסה להוסיף חלק כפול וחלק לא ותראה אם הוא הכניס את הכפול). -- [פשוט אין לי עכשיו זמן כדי לבדוק את זה]
    אם זה לא הולך, הייתי מנסה לעבור על ההוספה בלופ + TRY, זה נשמע הכי פחות מלוכלך והכי קצר...

    פורסם במקור בפורום CODE613 ב09/02/2014 02:12 (+02:00)


  • Sql Server התנהגות מפתח ראשי
    clickoneC clickone

    אתה מכניס הכל במכה, או עם לופ?
    הייתי הולך על משהו בסיגנון של On error resume next בVB. (אני לא בטוח שזה קיים בSQL במתכונת הזו)
    אבל מה שבטוח קיים זה בסגנון TRY של דוטנט.
    דוגמא לTRY עם יצירת שגיאה בחילוק ב0:

    BEGIN TRY
        -- Generate divide-by-zero error.
        SELECT 1/0;
    END TRY
    BEGIN CATCH
        -- Execute error retrieval routine.
        
    END CATCH;
    

    השאלה אם כשהוא מייצר שגיאה הוא אכן מכניס את מי שכן מצליח להיכנס לטבלה, ורק זורק שגיאה -- אז מתאים שתשתמש בזה, או שהוא לא מכניס גם את מה שתיקני, ואז אתה צריך לעבור בלולאה ולהכניס אחד אחד עם הTRY.

    בנוסף:
    הטבלה שאליה אתה מוסיף היא זמנית או קבועה?
    אם היא זמנית אז לא נורא שתעשה בסוף SELECT DISTINCT ואז תוסיף לקבועה או תעשה מה שבא לך עם הנתונים. אם היא קבועה, אז באמת זה לא כ"כ בא בחשבון.

    פורסם במקור בפורום CODE613 ב09/02/2014 01:30 (+02:00)

  • 1 / 1
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום