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

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

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

clickone

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

פוסטים

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

  • שאילתה אקסס, SQL
    clickoneC clickone

    @רחמים

    א''כ למדתי כאן שני דברים חדשים:

    1. אפשר לעשות קשרי גומלין לשאילתא במקום לטבלה, וכך השאילתא תציג כמה טבלאות.

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

    1. אפשר דרך הקוד להחיל תנאים שעל פיהם תיבנה שאילתא שונה לכל מקרה.

    לאו דווקא בשאילתא הזו. כל שאילתא אתה יכול לבנות בטקסט.
    @רחמים

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

    כן.

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

    ארכיון code613m

  • שאילתה אקסס, SQL
    clickoneC clickone

    @רחמים

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

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

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

    ארכיון code613m

  • שאילתה אקסס, SQL
    clickoneC clickone

    @שמואל

    יש לי טבלאות כדלהלן

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

    ע"י קוד?
    נניח שיש לך 2 טפסים שאמורים להיות טפסי משנה
    frmSubMasav = משנה להו"ק
    frmSubCreditCard = משנה לאשראי

    נניח גם שהשדה המחזיק את סוג התשלום (אשראי או הו"ק) נקרא FeeVia.

    ויש לך טופס עם פקד טופס משנה בשם SubForm.
    אתה צריך לעשות באירוע Form_Current (שנקרא בכל פעם שיש מעבר לרשומה אחרת) את הקוד הבא:

    Private Sub Form_Current()
        Select Case Me!FeeVia
            Case 1
                ' אם זה הוראת קבע
                Me!SubForm.SourceObject = "frmSubMasav"
                Me!SubForm.LinkMasterFields = "IDHok"
                Me!SubForm.LinkChildFields = "IDHok"
            Case 2
                ' אם זה אשראי
                Me!SubForm.SourceObject = "frmSubCreditCard"
                Me!SubForm.LinkMasterFields = "IDCCredit"
                Me!SubForm.LinkChildFields = "IDCCredit"
            Case Else
                ' כאן תחליט מה קורה אם זה לא אשראי או הוק
                Me!SubForm.SourceObject = ""
                Me!SubForm.LinkMasterFields = ""
                Me!SubForm.LinkChildFields = ""
        End Select
    End Sub
    

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

    SELECT ID, Price, Bla, Bla, Bla, "הוק" AS FeeType FROM TblMasav
    UNION ALL
    SELECT ID, Price, Bla, Bla, Bla, "אשראי" AS FeeType FROM TblCreditCard
    

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

    הדבר שאתה חייב להקפיד עליו בשאילתת איחוד (UNION) זה שכמות השדות בכל הטבלאות חייבת להיות זהה.
    בהצלחה....

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

    SELECT ID, Price,  "הוק" AS FeeType FROM TblMasav
    UNION ALL
    SELECT ID, -Price,  "חזרת הוק" AS FeeType FROM TblMasav WHERE Return=True
    UNION ALL
    SELECT ID, ReturnPrice,  "עמלת חזרת הוק" AS FeeType FROM TblMasav  WHERE Return=True And nz(ReturnPrice,0)<>0
    

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

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

    ארכיון code613m

  • נעילת תוכנה באקסס
    clickoneC clickone

    @ארכיטקט

    אפשרות אחת זה ליצור קובץ accde שזה עובד כמו קובץ רגיל רק זה מקופמל (גם מגביר את הביצועים והמהירות)

    אפשרות שניה זה לנעול את הקוד באמצעות סיסמה, בתפריט של visual basic tools>properies

    :lol: :lol: :lol:
    עד שכתבתי ודיברתי עם לקוח... הקדמת אותי....

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

    ארכיון code613m

  • נעילת תוכנה באקסס
    clickoneC clickone

    לא MDE? (זה כמו לקמפל, אם כי יודעי דבר מספרים שמייקרוספט עצמם כן יכולים לראות את הקוד).
    אם אתה רוצה, אתה יכול לבחור לנעול את הקוד VBA ע"י סיסמא. (זה אומר שעדיין יוכלולשחק עם העיצוב של הטפסים - אם גם את זה אתה לא רוצה, תבחר בMDE)
    תיגש בעורך הקוד למעלה לTools, אח"כ תבחר בתפריט ב"שם הפרוייקט" Properties, ושם אתה צריך לסמן בV ולתת סיסמא.
    מצ"ב תמונה

    Screenshot 2014-01-09 15.07.09.png
    בהצלחה!

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

    ארכיון code613m

  • איפה כדאי לשמור את המסד
    clickoneC clickone

    תחליף את CREATE

    CREATE TABLE [dbo].[catgores](
        [ID] [int] IDENTITY(1,1) NOT NULL,
        [catrory] [nchar](10) COLLATE Hebrew_CI_AS NULL,
     CONSTRAINT [PK_catgores] PRIMARY KEY CLUSTERED
    

    ב ALTER,
    תמחק את הסוגריים ותוסיף ADD, ואל תשכח להוציא את כל השדות שכבר קיימים....
    בדוגמא להלן אני מניח שהיה רק שדה ID ולכן אני מסיר אותו ומשאיר את השאר

    ALTER TABLE [dbo].[catgores]
        ADD [catrory] [nchar](10) COLLATE Hebrew_CI_AS NULL
    

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

    ארכיון code613m

  • איפה כדאי לשמור את המסד
    clickoneC clickone

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

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

    ארכיון code613m

  • איפה כדאי לשמור את המסד
    clickoneC clickone

    אתה יכול להעלות תוכן של הPUBLISH?

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

    ארכיון code613m

  • איפה כדאי לשמור את המסד
    clickoneC clickone

    למי ששם לב בשורה 22 יש את הקוד הבא:

    :on error exit
    

    :on error exit
    נהפך ל:
    <img src="./images/smilies/icon_e_surprised.gif" alt=":o" title="מופתע">n error exit
    מצחיק שהוא מפרש את נקודותיים O לסמיילי מופתע.
    פשוט לא הבנתי מתי זה נדחף לקוד. לתשומת לב מנהלי האתר. (או המפתחים בPHP שמסתובבים כאן) - כשעושים הדגשות וצבעים בקוד זה לא נתפס, אז אם אפשר לפחות שלא יהרוס לנו את הקוד......

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

    ארכיון code613m

  • איפה כדאי לשמור את המסד
    clickoneC clickone

    @רחמים

    זה נראה ממש מצויין!
    יישר כח גדול!

    מאיפה אני לוקח את נוסח הסקיפט שיוצר את כל הטבלאות והשאילתות במסד?
    ב VS 2013 ראיתי שיש T-SQL ושם יש את הסקריפט של כל טבלה, אבל ב VS 2010 איפה זה נמצא?
    כמו כן מי שמשתמש באקסס איפה נמצא הסקריפט?

    אני משתמש בVS2012 ושם יש באמת גם עידכון עפ"י השלבים הבאים:
    שלב 1:

    UpdateSQLStep1.png
    ואח"כ שלב 2:

    UpdateSQLStep2.png
    אח"כ ייפתח חלון עם קוד SQL כזה:

    /*
    Deployment script for C:\USERS\CLICKONE\DOCUMENTS\VISUAL STUDIO 2012\PROJECTS\WPFSYNAGOGUE\WPFSYNAGOGUE\DB.MDF
    
    This code was generated by a tool.
    Changes to this file may cause incorrect behavior and will be lost if
    the code is regenerated.
    */
    
    GO
    SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON;
    
    SET NUMERIC_ROUNDABORT OFF;
    
    
    GO
    :setvar DatabaseName "C:\USERS\CLICKONE\DOCUMENTS\VISUAL STUDIO 2012\PROJECTS\WPFSYNAGOGUE\WPFSYNAGOGUE\DB.MDF"
    :setvar DefaultFilePrefix "C_\USERS\CLICKONE\DOCUMENTS\VISUAL STUDIO 2012\PROJECTS\WPFSYNAGOGUE\WPFSYNAGOGUE\DB.MDF_"
    :setvar DefaultDataPath "C:\Users\ClickOne\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\v11.0\ "
    :setvar DefaultLogPath "C:\Users\ClickOne\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\v11.0\ "
    
    GO
    : on error exit
    GO
    /*
    Detect SQLCMD mode and disable script execution if SQLCMD mode is not supported.
    To re-enable the script after enabling SQLCMD mode, execute the following:
    SET NOEXEC OFF; 
    */
    :setvar __IsSqlCmdEnabled "True"
    GO
    IF N'$(__IsSqlCmdEnabled)' NOT LIKE N'True'
        BEGIN
            PRINT N'SQLCMD mode must be enabled to successfully execute this script.';
            SET NOEXEC ON;
        END
    
    
    GO
    USE [$(DatabaseName)];
    
    
    GO
    
    IF (SELECT OBJECT_ID('tempdb..#tmpErrors')) IS NOT NULL DROP TABLE #tmpErrors
    GO
    CREATE TABLE #tmpErrors (Error int)
    GO
    SET XACT_ABORT ON
    GO
    SET TRANSACTION ISOLATION LEVEL READ COMMITTED
    GO
    BEGIN TRANSACTION
    GO
    PRINT N'Altering [dbo].[TblDonation]...';
    
    
    GO
    ALTER TABLE [dbo].[TblDonation]
        ADD [cNow] DATETIME NULL;
    
    
    GO
    IF @@ERROR <> 0
       AND @@TRANCOUNT > 0
        BEGIN
            ROLLBACK;
        END
    
    IF @@TRANCOUNT = 0
        BEGIN
            INSERT  INTO #tmpErrors (Error)
            VALUES                 (1);
            BEGIN TRANSACTION;
        END
    
    
    GO
    
    IF EXISTS (SELECT * FROM #tmpErrors) ROLLBACK TRANSACTION
    GO
    IF @@TRANCOUNT>0 BEGIN
    PRINT N'The transacted portion of the database update succeeded.'
    COMMIT TRANSACTION
    END
    ELSE PRINT N'The transacted portion of the database update failed.'
    GO
    DROP TABLE #tmpErrors
    GO
    PRINT N'Update complete.'
    GO
    

    שם תחפש את הקוד שמשנה את הטבלה. (בד"כ בשינוי מתחיל בALTER ובטבלה חדשה מתחיל בCREATE).

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

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

    ארכיון code613m

  • איפה כדאי לשמור את המסד
    clickoneC clickone

    הנה הדוגמא... (לקח קצת זמן להגיע לזה, אבל זה מגיע בסוף.)

    ' קבוע השומר את גירסת המסד האחרונה
    Const CurrentVer As Integer = 3
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            ' שידרוג הDB
            UpDb()
            'TODO: This line of code loads data into the 'DBDataSet.Demo1' table. You can move, or remove it, as needed.
            Me.Demo1TableAdapter.Fill(Me.DBDataSet.Demo1)
    
        End Sub
        Sub UpDb()
            ' הצהרה על קונקשיין
            Dim cnn As New SqlClient.SqlConnection
            ' משיכת מחרוזת החיבור מהגדרות האפליקציה
            cnn.ConnectionString = My.Settings.DBConnectionString
            ' פתיחת מחרוזת החיבור
            cnn.Open()
            '  בדיקה מהגירסת הדאטאבייס האחרונה
            Dim verCmd As New Data.SqlClient.SqlCommand("select DbVer From Setting", cnn)
    
            Dim dr As SqlDataReader = verCmd.ExecuteReader()
            dr.Read()
            Dim ver As Integer = dr.Item(0)
            ' סגירת הקורא. (לפעמים הוא עושה בעיות לשדרג כשזה פתוח) לכן אני סוגר אותו
            dr.Close()
            Try
                ' פתיחת קובץ טקסט מצורף והמרה לשורות במערך
                Dim DbUp As Array = Split(My.Computer.FileSystem.ReadAllText(CurDir() & "\DbUp.txt"), vbNewLine)
                Dim Row As Array
                For Each Line As String In DbUp
                    'המרת כל שורה למערך המפריד את גירסת המסד והקוד בשביל השידרוג
                    Row = Split(Line, "|")
                    ' בדיקה אם הגירסה יותר קטנה מהגירסה הנוכחית
                    If Row(0) > ver Then UpDbSql(Row(1), cnn)
    
                Next
                'עידכון הגירסה הנוכחית במסד הלקוח
                verCmd.CommandText = "UPDATE Setting SET DbVer = " & CurrentVer
                verCmd.ExecuteNonQuery()
    
    
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub
        Sub UpDbSql(cmdSql As String, cnn As SqlClient.SqlConnection)
            Try
                ' הרצת הפקודה לשידרוג
                Dim cmd As New Data.SqlClient.SqlCommand(cmdSql, cnn)
    
                cmd.ExecuteNonQuery()
    
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
    
        End Sub
    

    לצערי א"א להעלות לפורום קבצים מעל 256 KB ולכן זה לא עולה.
    אז לחצו כאן כדי להוריד את זה מדרופבוקס

    משתמשי אקסס:

    1. אני ממליץ לעשות טבלה מקומית ולא לשים את הנתונים בקובץ חיצוני.

    2. קוד הSQL DLL (של ההגדרת נתונים) מעט שונה.
      במקום:

      CREATE TABLE [dbo].[Table3] ([Id] INT NOT NULL PRIMARY KEY IDENTITY, [LastName] NVARCHAR(50) NULL, [City] INT NULL)
      צריך להיות:

      CREATE TABLE [Table3] ([Id] COUNTER PRIMARY KEY , [LastName] TEXT(50), [City] INT)
      ובמקום:

      ALTER TABLE [dbo].[t1] ADD [f1] INT NULL
      תשתמשו ב:

      ALTER TABLE [t1] ADD COLUMN [f1] INT
      זה הכיוון, ואידך זיל גמור.

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

    ארכיון code613m

  • איפה כדאי לשמור את המסד
    clickoneC clickone

    @רחמים

    @ClickOne
    כשאתה בוחר את הקובץ בסייר הפיתרון, יש לך למטה הגדרה Copy To Output - תבחר שם Copy If Never - זה יגרום לIDE לא להעתיק אותו כל פעם אלא רק מתי שהוא לא נמצא בתיקיית הEXE.

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

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

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

    ארכיון code613m

  • איפה כדאי לשמור את המסד
    clickoneC clickone

    @רחמים

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

    כשאתה בוחר את הקובץ בסייר הפיתרון, יש לך למטה הגדרה Copy To Output - תבחר שם Copy If Never - זה יגרום לIDE לא להעתיק אותו כל פעם אלא רק מתי שהוא לא נמצא בתיקיית הEXE.
    @רחמים

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

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

    תודה לכולם.

    @ארכיטקט

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

    במסדי נתונים לא יחסיים הבעיה הזאת לא מתחילה כמובן...

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

    להגיד לך שזה ממלא את כל הציפיות שלי, לא ממש, ועל זה נאמר השם יעזור.

    בהחלט יש את הפיתרון של ארכיטקט.
    יש איזה פיתרון של VS, אבל זה משהו ביחד עם אשף הפריסה שלהם, - לא ממש התעסקתי עם זה.
    הפיתרון שלי לעניין:
    עשיתי בטבלת הSetting שדה שמחזיק את גירסת המסד האחרונה, במקביל, אני מחזיק קובץ (ובאקסס - טבלה מקומית ולא מקושרת) שמכילה עמודה של גירסה, וכן קוד SQL של שינוי מבני נתונים (נקרא גם DDL). - אתה יכול למצוא את הקוד של שינוי מבני הנתונים כשאתה עורך טבלה במנג'מנט, יש שם אפשרות לראות את הסקריפט SQL שמבצע את השינוי הזה.
    אח"כ לכתוב פונקצייה שבודקת בDB בטבלה Setting מה גירסת הDB. במידה וזה קטן מהגירסה הנוכחית (אותה אתה יכול לשמור בהגדרות של התוכנה שלך, או במשתנה סטטי) אני מריץ שאילתת SQL בלופ, ואח"כ מעדכן בטבלה Setting את גירסת הDB החדשה.
    זה עובד בהצלחה מדהימה כבר למעלה מ6 שנים, ואני לא חושש כלל להוסיף/ לשנות שדות - וגם להוסיף טבלאות.
    לפני שאני ניגש לDB בפעם הראשונה אני מריץ את הפונצייה, ובא לציון גואל.....
    בהצלחה!

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

    ארכיון code613m

  • WPF הצגת נתונים מ SDF
    clickoneC clickone

    פירגון ענק לדוד ל.ט. על פירוט הדרכים.
    לצערי יש המון חוסר בהירות (גם מצד מייקרוסופט בעצמה) לגבי הDataSet, ודוד ממש הצליח למצות בכמה משפטים דברים שלקח לי המון זמן להבין לבד בצירף בית ההוראה של הרב גוגל :lol: :lol: .
    עדיין לא כ"כ מובן למה מייקרוסופט בחרו לפצל את הDataSet ל 3 אובייקטים שונים, (אני מדבר על המרכזיים, ולא על המימוש מאחורה), ולא להשתמש באובייקט אחד כמו בASPX (אני לא מדבר על LTS, אלא אפילו על אובייקט המקשר ישירות לSQL SERVER ואפילו לאקסס. 😢 :lol:

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

    ארכיון code613m

  • קידוד עברית דוס ל windows vba
    clickoneC clickone

    @ארכיטקט

    את הקוד של קליק וואן עוד לא ניסתי, יש לי קושי להשתמש ברפרנסים ופוקציות וינדווס. גם בגלל החילוק בין 32 ל 64 ביט.

    בנוסף, אם באמת אתה סוגר את האקסס גם ל64 ביט (או לא סוגר אותו בכלל :lol: :lol: :lol: ), יש לך דרך להשתמש בפונקציות API, אתה צריך רק להוסיף
    הגדרה בהצהרה שזו פונקצייה בטוחה.
    להגדרה קוראים: PtrSafe
    ולפיכך ההצהרה תהיה:

    Private Declare PtrSafe Function OemToCharA Lib "user32.dll" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
    

    כדי שלא תצטרך לנהל גירסאות 32 ו64 ביט, תוכל להשתמש בהצהרה בתחביר הבא:

    #If VBA7 Then
        Private Declare PtrSafe Function OemToCharA Lib "user32.dll" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
    #Else
        Private Declare Function OemToCharA Lib "user32.dll" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
    #End If
    

    כמובן שההצהרה יושבת בראש המודול. הסולמית בהתחלה מאפשרת לIF לרוץ אפילו שהוא לא בתוך פונקצייה.
    מידע נוסף לגבי פונקציות API בסביבת אופי 64 ביט תוכל למצוא כאן

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

    ארכיון code613m

  • קידוד עברית דוס ל windows vba
    clickoneC clickone

    @ארכיטקט

    את הקוד של קליק וואן עוד לא ניסתי, יש לי קושי להשתמש ברפרנסים ופוקציות וינדווס. גם בגלל החילוק בין 32 ל 64 ביט.

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

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

    ארכיון code613m

  • קידוד עברית דוס ל windows vba
    clickoneC clickone

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

    בכל מקרה:

    'API שהופך קידוד ווינדוס לדוס - מתאים להמרה בשביל הקובץ מסב
    Private Declare Function CharToOemA Lib "user32.dll" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
    ' API הפוך. ממיר לווינדוס
    Private Declare Function OemToCharA Lib "user32.dll" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
    
    
    Public Function test()
    Dim t As String
    t = "ˆ—˜‰‰ƒ ˆ˜‹€˜™‰ "
    OemToCharA t, t
    'צריך להשתמש בStrReverse כדי להפוך את הסטרינג
    MsgBox StrReverse(t)
    End Function
    

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

    ארכיון code613m

  • החזר ערך קטן מבין שניים ב vb6
    clickoneC clickone

    @רחמים

    מה ההבדל בין פונקיציית ()IsNothing לבין השוואה עם שני אופרטורים Is Nothing

    אם תפתח ברפלקטור תראה שאכן אין הבדל. אם כי יש שמספרים שיותר נוח Is Nothing בגלל השלילה Not.
    התשובה מתייחסת לדוטנט (אם כי יכול להיות שגם בVBA זה נכון, אבל שם באמת יש פונקצייה מאחורה, ולא סתם בדיקה של Is Nothing)
    מקור התשובה כאן

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

    ארכיון code613m

  • החזר ערך קטן מבין שניים ב vb6
    clickoneC clickone

    @ארכיטקט

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

    אתה צודק, בטעות הסתכלתי על הקוד שרחמים העלה ושם הייתה החזרה של ערך: (As Integer)

    Public Shared Function Min(ByVal val1 As Integer, ByVal val2 As Integer) As Integer
    

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

    ארכיון code613m

  • החזר ערך קטן מבין שניים ב vb6
    clickoneC clickone

    @ארכיטקט

    If value1 > value2 Or IsNull(value1) Or IsMissing(value1) Or value1 = Empty Then
    

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

    Public Function IsNothing(varToTest As Variant) As Integer
    '  Tests for a "logical" nothing based on data type
    '  Empty and Null = Nothing
    '  Number = 0 is Nothing
    '  Zero length string is Nothing
    '  Date/Time is never Nothing
    
        IsNothing = True
    
        Select Case VarType(varToTest)
            Case vbEmpty
                Exit Function
            Case vbNull
                Exit Function
            Case vbBoolean
                If varToTest Then IsNothing = False
            Case vbByte, vbInteger, vbLong, vbSingle, vbDouble, vbCurrency
                If varToTest <> 0 Then IsNothing = False
            Case vbDate
                IsNothing = False
            Case vbString
                If (Len(varToTest) <> 0 And varToTest <> " ") Then IsNothing = False
        End Select
    
    End Function
    

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

    ארכיון code613m
  • 1 / 1
  • התחברות

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

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