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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. SQL: קביעת רשימת ערכים מותאמת אישית

SQL: קביעת רשימת ערכים מותאמת אישית

מתוזמן נעוץ נעול הועבר ארכיון code613m
14 פוסטים 3 כותבים 766 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • A מנותק
    A מנותק
    avr416
    כתב ב נערך לאחרונה על ידי
    #1

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

    פורסם במקור בפורום CODE613 ב08/07/2015 23:37 (+03:00)

    תגובה 1 תגובה אחרונה
    0
    • clickoneC מנותק
      clickoneC מנותק
      clickone
      כתב ב נערך לאחרונה על ידי
      #2

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

      וכו' וכו'

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

      בטבלה של התרומות אתה שם עמודה מסוג INT ובעצם אתה מחזיק תיבה משולבת שמציגה את הטקסט מהטבלה "אמצעי תשלום" אבל בפועל שומרת רק את המזהה (העמודה של המספר)

      פורסם במקור בפורום CODE613 ב08/07/2015 23:51 (+03:00)

      אין טסט כמו פרודקשן.

      המייל שלי urivpn@gmail.com

      תגובה 1 תגובה אחרונה
      2
      • A מנותק
        A מנותק
        avr416
        כתב ב נערך לאחרונה על ידי
        #3

        @ClickOne

        בטבלה של התרומות אתה שם עמודה מסוג INT ובעצם אתה מחזיק תיבה משולבת שמציגה את הטקסט מהטבלה "אמצעי תשלום" אבל בפועל שומרת רק את המזהה (העמודה של המספר)

        את התיבה המשולבת אני יוצר בטופס שלי ולא בדטה בייס, נכון?

        פורסם במקור בפורום CODE613 ב08/07/2015 23:56 (+03:00)

        תגובה 1 תגובה אחרונה
        0
        • clickoneC מנותק
          clickoneC מנותק
          clickone
          כתב ב נערך לאחרונה על ידי
          #4

          כן. בוודאי.
          הSQL זה לשמירת הנתונים וטיפול בהם.

          ההצגה זה בעיקרון בUI.

          פורסם במקור בפורום CODE613 ב09/07/2015 00:00 (+03:00)

          אין טסט כמו פרודקשן.

          המייל שלי urivpn@gmail.com

          תגובה 1 תגובה אחרונה
          2
          • A מנותק
            A מנותק
            avr416
            כתב ב נערך לאחרונה על ידי
            #5

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

            פורסם במקור בפורום CODE613 ב09/07/2015 01:47 (+03:00)

            תגובה 1 תגובה אחרונה
            0
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              כתב ב נערך לאחרונה על ידי
              #6

              @avr416

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

              DataGridComboBoxColumn.
              צריך להכיר את המאפיינים:
              ItemsSource צריך להכיל את הטבלה השניה (בעלת הארבעה ערכים).
              נניח שיש לה עמודת ID ועמודה Description.

              DisplayMemberPath שם השדה/עמודה בטבלה השניה אותו אתה רוצה שיוצג בתצוגה, היינו Description.
              SelectedValuePath העמודה שתייצג את הSelectedValue. במקרה שלנו UD. כלומר שיפנו למאפיין SelectedValue וישאלו ממנו את ערכו זה יחזיר את הערך מתוך שם העמודה המצויין, וכן להפך: כשיקבעו לSelectedValue ערך, השורה שתיבחר תהיה זו שבעמודה המצויינת הערך מתאים.
              אחרי כן עושים למאפיין SelectedValue בינדינג לעמודה בטבלה הנוכחית שמכילה את הID הנכון במין הארבעה.

              סיבוך קטן...

              פורסם במקור בפורום CODE613 ב09/07/2015 18:57 (+03:00)

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              תגובה 1 תגובה אחרונה
              1
              • A מנותק
                A מנותק
                avr416
                כתב ב נערך לאחרונה על ידי
                #7

                תודה!
                כלומר, בעצם למשתמש מוצג comboBox שמכיל רק עמודה אחת, ולפי מה שהוא בוחר זה מחזיר לי את הערך של הID שבעמודה שהוא לא רואה.

                פורסם במקור בפורום CODE613 ב09/07/2015 19:01 (+03:00)

                תגובה 1 תגובה אחרונה
                1
                • A מנותק
                  A מנותק
                  avr416
                  כתב ב נערך לאחרונה על ידי
                  #8

                  @דוד ל.ט.

                  DataGridComboBoxColumn.
                  צריך להכיר את המאפיינים:
                  ItemsSource צריך להכיל את הטבלה השניה (בעלת הארבעה ערכים).
                  נניח שיש לה עמודת ID ועמודה Description.

                  DisplayMemberPath שם השדה/עמודה בטבלה השניה אותו אתה רוצה שיוצג בתצוגה, היינו Description.
                  SelectedValuePath העמודה שתייצג את הSelectedValue. במקרה שלנו UD. כלומר שיפנו למאפיין SelectedValue וישאלו ממנו את ערכו זה יחזיר את הערך מתוך שם העמודה המצויין, וכן להפך: כשיקבעו לSelectedValue ערך, השורה שתיבחר תהיה זו שבעמודה המצויינת הערך מתאים.
                  אחרי כן עושים למאפיין SelectedValue בינדינג לעמודה בטבלה הנוכחית שמכילה את הID הנכון במין הארבעה.

                  סיבוך קטן...

                  ניסיתי בטבלה של תרומות ליצור קומבובוקס של רשימת התורמים שבמערכת, כשבטבלה הוא שומר רק את הID אך בתצוגה הוא מציג את שם התורם.

                  לא בדיוק הצלחתי..
                  עקרונית ביצירה האוט' נוצר לי הקוד הבא, ולא הצלחתי למצוא שם את ההגדרות הללו (למרות שניסיתי..)

                  <DataGridTemplateColumn x:Name="donorColumn" Header="מזהה תורם" Width="SizeToHeader">
                              <DataGridTemplateColumn.CellTemplate>
                                  <DataTemplate>
                                      <ComboBox>
                                          <ComboBoxItem  Content="{Binding Donor}"/>
                                      </ComboBox>
                                  </DataTemplate>
                              </DataGridTemplateColumn.CellTemplate>
                          </DataGridTemplateColumn>
                  

                  אשמח להסבר כיצד אפשר להגדיר באופן הנ"ל..

                  מחקתי אותו וכתבתי את הקוד הבא:

                  <DataGridComboBoxColumn x:Name="donorComboBox" ItemsSource="{Binding Source=avrTrumaDataSet, Path=Person}" DisplayMemberPath="FirstName" SelectedValuePath="ID" SelectedValueBinding="Donor"  Header="מזהה תורם">
                  

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

                  תודה רבה רבה לכל העוזרים והמסייעים והטורחים לענות על שאלותי 🙂

                  פורסם במקור בפורום CODE613 ב14/07/2015 17:57 (+03:00)

                  תגובה 1 תגובה אחרונה
                  0
                  • dovidD מנותק
                    dovidD מנותק
                    dovid ניהול
                    כתב ב נערך לאחרונה על ידי
                    #9

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

                    SelectedValueBinding="{Binding Donor}"
                    

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

                    פורסם במקור בפורום CODE613 ב14/07/2015 22:03 (+03:00)

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    תגובה 1 תגובה אחרונה
                    1
                    • A מנותק
                      A מנותק
                      avr416
                      כתב ב נערך לאחרונה על ידי
                      #10

                      תקנתי וכתבתי כך:

                      <DataGridComboBoxColumn x:Name="donorComboBox" ItemsSource="{Binding Source=avrTrumaDataSet,Path=Person}" DisplayMemberPath="FirstName" SelectedValuePath="ID" SelectedValueBinding="{Binding Donor}" Header="מזהה תורם" />
                      

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

                      <DataGridComboBoxColumn x:Name="donorComboBox" ItemsSource="{Binding Source={StaticResource avrTrumaDataSet},Path=Person}" DisplayMemberPath="FirstName" SelectedValuePath="ID" SelectedValueBinding="{Binding Donor}" Header="מזהה תורם" /> 
                      

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

                      פורסם במקור בפורום CODE613 ב15/07/2015 00:48 (+03:00)

                      תגובה 1 תגובה אחרונה
                      0
                      • dovidD מנותק
                        dovidD מנותק
                        dovid ניהול
                        כתב ב נערך לאחרונה על ידי
                        #11

                        לא מבין את השגיאה אבל הקוד השני שלך אמור לעבוד.
                        לא רואה סיבה שלא. בדוק היטב את השמות ובמיוחד את הSelectedValuePath.

                        פורסם במקור בפורום CODE613 ב15/07/2015 15:27 (+03:00)

                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

                        תגובה 1 תגובה אחרונה
                        0
                        • A מנותק
                          A מנותק
                          avr416
                          כתב ב נערך לאחרונה על ידי
                          #12

                          בדקתי וזה לא עובד.
                          התוצאה היא כך:

                          הוסף תרומה.png
                          כלומר הוא מציג רשימה נפתחת ריקה, אך הוא לא מציג את הנתונים..

                          הקוד הוא זה: (השורה החשובה זו שורה מס' 25)

                          <Window
                                  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                                  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                                  xmlns:local="clr-namespace:TrialSQL1" x:Class="TrialSQL1.AddTruma"
                                  Title="AddTruma" MinHeight="400" MinWidth="900" Loaded="Window_Loaded" FlowDirection="RightToLeft">
                              <Window.Resources>
                                  <local:AvrTrumaDataSet x:Key="avrTrumaDataSet"/>
                                  <CollectionViewSource x:Key="donoationViewSource" Source="{Binding Donoation, Source={StaticResource avrTrumaDataSet}}"/>
                              </Window.Resources>
                              <Grid DataContext="{StaticResource donoationViewSource}">
                                  <Grid.RowDefinitions>
                                      <RowDefinition Height="40"/>
                                      <RowDefinition/>
                                  </Grid.RowDefinitions>
                                  <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="0" FontSize="18" FontWeight="Bold"><Run Text="הוסף תרומות"/></TextBlock>
                                  <DataGrid x:Name="donoationDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}" Margin="10,75,0,189" Grid.Row="1" RowDetailsVisibilityMode="VisibleWhenSelected" SelectionChanged="donoationDataGrid_SelectionChanged">
                                      <DataGrid.Columns>
                                          <DataGridTemplateColumn x:Name="idDonationColumn" Header="מזהה תרומה" IsReadOnly="True" Width="SizeToHeader">
                                              <DataGridTemplateColumn.CellTemplate>
                                                  <DataTemplate>
                                                      <TextBlock Text="{Binding IdDonation}"/>
                                                  </DataTemplate>
                                              </DataGridTemplateColumn.CellTemplate>
                                          </DataGridTemplateColumn>
                                          <DataGridComboBoxColumn x:Name="donorComboBox" ItemsSource="{Binding Source={StaticResource avrTrumaDataSet},Path=Person}" DisplayMemberPath="FirstName" SelectedValuePath="ID" SelectedValueBinding="{Binding Donor}" Header="מזהה תורם" />
                                          <DataGridCheckBoxColumn x:Name="isOneTimeColumn" Binding="{Binding IsOneTime}" Header="חד פעמי?" Width="SizeToHeader"/>
                                          <DataGridTextColumn x:Name="sumDonationColumn" Binding="{Binding SumDonation}" Header="סכום התרומה" Width="SizeToHeader"/>
                                          <DataGridTemplateColumn x:Name="startDateColumn" Header="תאריך התחלה" Width="SizeToHeader">
                                              <DataGridTemplateColumn.CellTemplate>
                                                  <DataTemplate>
                                                      <DatePicker SelectedDate="{Binding StartDate, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}"/>
                                                  </DataTemplate>
                                              </DataGridTemplateColumn.CellTemplate>
                                          </DataGridTemplateColumn>
                                          <DataGridTextColumn x:Name="numOfPaymentColumn" Binding="{Binding NumOfPayment}" Header="מספר תשלומים" Width="SizeToHeader"/>
                                          <DataGridTemplateColumn x:Name="deadlineColumn" Header="תאריך סיום" Width="SizeToHeader">
                                              <DataGridTemplateColumn.CellTemplate>
                                                  <DataTemplate>
                                                      <DatePicker SelectedDate="{Binding Deadline, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}"/>
                                                  </DataTemplate>
                                              </DataGridTemplateColumn.CellTemplate>
                                          </DataGridTemplateColumn>
                                          <DataGridTemplateColumn x:Name="howToPayColumn" Header="אופן התשלום" Width="SizeToHeader">
                                              <DataGridTemplateColumn.CellTemplate>
                                                  <DataTemplate>
                                                      <ComboBox>
                                                          <ComboBoxItem Content="{Binding HowToPay}"/>
                                                      </ComboBox>
                                                  </DataTemplate>
                                              </DataGridTemplateColumn.CellTemplate>
                                          </DataGridTemplateColumn>
                                          <DataGridTemplateColumn x:Name="idMethodPayColumn" Header="מזהה אמצעי תשלום" Width="SizeToHeader">
                                              <DataGridTemplateColumn.CellTemplate>
                                                  <DataTemplate>
                                                      <ComboBox>
                                                          <ComboBoxItem Content="{Binding IdMethodPay}"/>
                                                      </ComboBox>
                                                  </DataTemplate>
                                              </DataGridTemplateColumn.CellTemplate>
                                          </DataGridTemplateColumn>
                                      </DataGrid.Columns>
                                  </DataGrid>
                          
                              </Grid>
                          </Window>
                          

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

                          פורסם במקור בפורום CODE613 ב19/07/2015 15:24 (+03:00)

                          תגובה 1 תגובה אחרונה
                          0
                          • dovidD מנותק
                            dovidD מנותק
                            dovid ניהול
                            כתב ב נערך לאחרונה על ידי
                            #13

                            אכן חוץ מלא להאמין לך אני לא רואה מוצא 🙂

                            פורסם במקור בפורום CODE613 ב20/07/2015 12:58 (+03:00)

                            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                            בכל נושא אפשר ליצור קשר dovid@tchumim.com

                            תגובה 1 תגובה אחרונה
                            0
                            • A מנותק
                              A מנותק
                              avr416
                              כתב ב נערך לאחרונה על ידי
                              #14

                              בעזרתו של דוד ל.ט. התבררה השגיאה!

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

                              פורסם במקור בפורום CODE613 ב20/07/2015 16:26 (+03:00)

                              תגובה 1 תגובה אחרונה
                              2

                              בא תתחבר לדף היומי!
                              • התחברות

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

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