none
"PDA資料庫程式設計" 一對多的儲存程式該怎麼撰寫 RRS feed

解答

  • Hi 在PDA上迷路的ㄚ浩 使用者勳章使用者勳章使用者勳章使用者勳章使用者勳章

    點到病患時 ListView 會有事件觸發,
    接著在該觸發事件中寫入如帶出對應新表單的程式碼,
    寫法大概可以參考如下:

    private void lv_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
    {
                string strID = lv.SelectedItems[0].Text;
                frmDetails frm = new frmDetails();
                frmDetails.ID = strID;
                frm.ShowDialog();
    }
    其中 strID 假設是資料庫的索引鍵

    每天都有進步的人值得敬重
    2009年9月25日 上午 03:27
  • //病患基資
    public class P
    {
          public Guid ID
          {
               get;set;
           }
          public string No
          {
               get;set;
           } 
           public string Name
           {
               get;set;
           } 
    }

    //病患就醫紀錄
    public class A
    {
    }

    //病患用藥紀錄
    public class B
    }

    //病患住院紀錄
    public class C
    {
    }
    //資料存取物件
    public class DataAccess
    {
           //取得全部病患基資
           public List<P> GetPs()
           {
              //Ado.NET 指令
                string selectCommand="SELECT * FROM TableT";
                ...............
                ...............
                List<P> ps=new List<P>();
                //資料庫轉企業務件
               return ps;
            }
           
    //取就醫紀錄
            public List<A> GetAs(guid pid)
           {
              //Ado.NET 指令
                string selectCommand="SELECT * FROM TableA WHERE PID="+pid.ToString();

                ...............
                ...............
                List<A> as=new List<A>();
                //資料庫轉企業務件
               return as;
            }
            
    //取用藥紀錄
          public List<B> GetBs(guid pid)
           {
              //Ado.NET 指令
                string selectCommand="SELECT * FROM TableB WHERE PID="+pid.ToString();

                ...............
                ...............
                List<B> bs=new List<B>();
                //資料庫轉企業務件
               return bs;
            }

    //取住院紀錄
          public List<C> GetCs(guid pid)
           {
              //Ado.NET 指令
                string selectCommand="SELECT * FROM TableC WHERE PID="+pid.ToString();
                ...............
                ...............
                List<C> cs=new List<C>();
                //資料庫轉企業務件
               return cs;
            }
    }

    public class AForm:Form//就診資料表單
    {
           public AForm(guid pid)
           {
           DataAccess da=new DataAccess("連線字串");
              List<A> as=da.GetAs(pid);//取得所有病患
              lsA.ItemsSource=as;//秀在List選單.
           }
    }

    public class BForm:Form//用藥資料表單
    {
           public BForm(guid pid)
           {
           DataAccess da=new DataAccess("連線字串");
              List<B> bs=da.GetBs(pid);//取得所有病患
              lsB.ItemsSource=bs;//秀在List選單.
           }
    }

    public class CForm:Form//住院資料表單
    {
           public CForm(guid pid)
           {
           DataAccess da=new DataAccess("連線字串");
              List<C> cs=da.GetCs(pid);//取得所有病患
              lsC.ItemsSource=cs;//秀在List選單.
           }
    }

    public class AppForm:Form //主應用程式表單
    {
         public AppForm()
         {
              DataAccess da=new DataAccess("連線字串");
              List<P> ps=da.GetPs();//取得所有病患
              lsP.ItemsSource=ps;//秀在List選單.
         }
          
    //秀就診紀錄
         private void tabpageA_Click(object sender,EventArage eas)
         { 
               P p=lsP.SelectedItem as P;
               AForm af=new AForm(p.ID);
               af.ShowDialog();
         }

    //秀用藥紀錄
         private void tabpageB_Click(object sender,EventArage eas)
         { 
               P p=lsP.SelectedItem as P;
               BForm af=new BForm(p.ID);
               af.ShowDialog();
         }

    //秀住院紀錄
         private void tabpageC_Click(object sender,EventArage eas)
         { 
               P p=lsP.SelectedItem as P;
               CForm af=new CForm(p.ID);
               af.ShowDialog();
         }
    }
    2009年9月25日 上午 06:46

所有回覆

  • 建議你用文字加以敘述,再配合圖片;不然光這樣還是不懂你想問的是什麼..
    提問時請清楚描述問題、留意應有禮節;嚴禁一行文、注音文 blog : http://www.dotblogs.com.tw/bauann/
    2009年9月23日 下午 01:30
    版主
  • 1.你的東西還沒出來!
    2.我不知道你的問題哪邊!還是全部都是問題?你把他分成幾個問題.自己先找,然後一個個問,一個個解.不要像某些人一次丟整個系統要人解!告訴他幾個方向又不接受,然後用不友善的語氣回復.
    3.你第一張圖的Code很普通.沒什麼大問題.只要下執行指令(好像Command.ExecuteNonQuery()吧!).
    4.寫資料庫程式.Master-Detail-Detail...這種關聯是基礎.想辦法搞會.
    5.看你的圖是要做實體產品.建議公司請個技術顧問或比較資深的工程師.雖然目前的程式看起來沒什麼難度.但很多細節還是要資深工程師修.台灣很少公司願意花錢請高級工程師.但由資深的人員來帶.已久遠來算可以減少TotalCost及加速開發.
    2009年9月24日 上午 12:42
  • 就是我有一個Form,裡面有很多個控制項,有combobox、listbox、textbox,當我選擇好我想要的combobox的值之後,按一

    下"加入"按鈕"(加入按鈕的程式我已經寫好了),醫囑項目的listbox會出現項目combobox裡所選的其中一筆值,而另外一

    個醫囑內容的listbox,會有次數combobox、執行總次數combobox、優先等級combobox以及補充說明的值,以上的操作可

    以重複入,看使用者想加入多少事項而定,最後使用者想決定儲存(以上的程式我已經寫好了),我的問題點在這裡:我有建

    立兩個資料表 1."醫囑資料表" 2."待辦事項資料表"兩個資料表之間的關係是一筆醫囑會有多筆事項,也就是一對多,但問題是

    一個INSERT SQL敘述可以同時存進兩張資料表嗎,醫囑資料表我想儲存的欄位有:病歷號碼、病患姓名、開立醫囑時間、醫

    師姓名、醫師編號、還有一個"醫囑編號"(這個欄位會自動建立不用使用者輸入),另一個待辦事項資料表我想儲存的欄位有:

    病歷號碼、開立醫囑時間、待辦項目、醫師姓名、醫師編號、次數、執行總次數、優先等級、補充說明,兩個資料表都以"醫

    囑編號"當做關聯,"醫囑資料表"的"醫囑編號"無疑的會自動產生醫囑編號,但是待辦事項資料表就不會自動建立了,最大問題

    就是在這裡,
    請幫幫我@@"。
    2009年9月24日 上午 05:29
  • 1.新刪修資料表方法很多.像可以多下幾次SqlCommand.用SP..
    2.Mobile APP不建議用自動產PK方式.因為一個資料庫可能有數百台行動裝置在操作.當你寫到資料中心.PK就沖到.
    所以你用GUID去做ID.用身分證號做NO.
    2009年9月24日 上午 05:58
  • 我有一個form裡面放一個DataGrid控制項,這一個DataGrid是去Binding一個資料表"病患清單資料表",當我用觸控筆在這個DataGrid裡點選其中一位病患,接著就會跳出另一個form,這一個form我是使用tabcontrol控制項,有很多個tabpage,每一個tabpage,都需要呈現與所選取到的病患的所有相關資料,而我的問題就是在這裡:觸控筆點選其中一位病患進而跳到另外一個form的程式該怎麼撰寫,希望真的有高手前輩可以了解我的疑問,因為我已經發問過很多次了,到現在也還沒有解決,我真的不知道是我表達能力不好還是哪裡出問題,請幫幫我,小弟感激不盡。

    以下是我的blog網址 裡面有我po上去的圖片解說,希望可以幫助前輩們更了解我的問題。

    http://www.wretch.cc/album/album.php?id=sopqos&book=5
    • 已合併 bauannModerator 2009年9月26日 上午 10:32 同樣問題重複提問
    2009年9月25日 上午 02:34
  • 1.你的表達沒問題.你能以圖表表達.圖表內容很清楚.至少比許多人好得多.我也知道你要做什麼.
    2.你的問題.坦白的說你程式能力不好.版上的先進不知怎麼指導你.你資料庫端不強.UI端太弱.你的題目是基本題.但要會也不是一樣天.最少你要將ADO.NET,SQL CE還有UI的基本搞會.這些都要看好幾本書.
    3.我記得前幾篇你不是有發文過!有幾位先進有給你範例地址,不知你看的心得如何?
    2009年9月25日 上午 03:23
  • Hi 在PDA上迷路的ㄚ浩 使用者勳章使用者勳章使用者勳章使用者勳章使用者勳章

    點到病患時 ListView 會有事件觸發,
    接著在該觸發事件中寫入如帶出對應新表單的程式碼,
    寫法大概可以參考如下:

    private void lv_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
    {
                string strID = lv.SelectedItems[0].Text;
                frmDetails frm = new frmDetails();
                frmDetails.ID = strID;
                frm.ShowDialog();
    }
    其中 strID 假設是資料庫的索引鍵

    每天都有進步的人值得敬重
    2009年9月25日 上午 03:27
  • //病患基資
    public class P
    {
          public Guid ID
          {
               get;set;
           }
          public string No
          {
               get;set;
           } 
           public string Name
           {
               get;set;
           } 
    }

    //病患就醫紀錄
    public class A
    {
    }

    //病患用藥紀錄
    public class B
    }

    //病患住院紀錄
    public class C
    {
    }
    //資料存取物件
    public class DataAccess
    {
           //取得全部病患基資
           public List<P> GetPs()
           {
              //Ado.NET 指令
                string selectCommand="SELECT * FROM TableT";
                ...............
                ...............
                List<P> ps=new List<P>();
                //資料庫轉企業務件
               return ps;
            }
           
    //取就醫紀錄
            public List<A> GetAs(guid pid)
           {
              //Ado.NET 指令
                string selectCommand="SELECT * FROM TableA WHERE PID="+pid.ToString();

                ...............
                ...............
                List<A> as=new List<A>();
                //資料庫轉企業務件
               return as;
            }
            
    //取用藥紀錄
          public List<B> GetBs(guid pid)
           {
              //Ado.NET 指令
                string selectCommand="SELECT * FROM TableB WHERE PID="+pid.ToString();

                ...............
                ...............
                List<B> bs=new List<B>();
                //資料庫轉企業務件
               return bs;
            }

    //取住院紀錄
          public List<C> GetCs(guid pid)
           {
              //Ado.NET 指令
                string selectCommand="SELECT * FROM TableC WHERE PID="+pid.ToString();
                ...............
                ...............
                List<C> cs=new List<C>();
                //資料庫轉企業務件
               return cs;
            }
    }

    public class AForm:Form//就診資料表單
    {
           public AForm(guid pid)
           {
           DataAccess da=new DataAccess("連線字串");
              List<A> as=da.GetAs(pid);//取得所有病患
              lsA.ItemsSource=as;//秀在List選單.
           }
    }

    public class BForm:Form//用藥資料表單
    {
           public BForm(guid pid)
           {
           DataAccess da=new DataAccess("連線字串");
              List<B> bs=da.GetBs(pid);//取得所有病患
              lsB.ItemsSource=bs;//秀在List選單.
           }
    }

    public class CForm:Form//住院資料表單
    {
           public CForm(guid pid)
           {
           DataAccess da=new DataAccess("連線字串");
              List<C> cs=da.GetCs(pid);//取得所有病患
              lsC.ItemsSource=cs;//秀在List選單.
           }
    }

    public class AppForm:Form //主應用程式表單
    {
         public AppForm()
         {
              DataAccess da=new DataAccess("連線字串");
              List<P> ps=da.GetPs();//取得所有病患
              lsP.ItemsSource=ps;//秀在List選單.
         }
          
    //秀就診紀錄
         private void tabpageA_Click(object sender,EventArage eas)
         { 
               P p=lsP.SelectedItem as P;
               AForm af=new AForm(p.ID);
               af.ShowDialog();
         }

    //秀用藥紀錄
         private void tabpageB_Click(object sender,EventArage eas)
         { 
               P p=lsP.SelectedItem as P;
               BForm af=new BForm(p.ID);
               af.ShowDialog();
         }

    //秀住院紀錄
         private void tabpageC_Click(object sender,EventArage eas)
         { 
               P p=lsP.SelectedItem as P;
               CForm af=new CForm(p.ID);
               af.ShowDialog();
         }
    }
    2009年9月25日 上午 06:46
  • 謝謝昭仁前輩的指點,只不過我的病患清單是使用DataGrid控制項來呈現的,listview也可以Binding資料表嗎,不好意思 我又麻煩你一次了@@"
    2009年9月25日 上午 09:26
  • HI 在PDA上迷路的ㄚ浩,

    datagrid 也同樣支援資料庫繫結機制,
    撰寫的概念流程等同先前回文。 

    每天都有進步的人值得敬重
    2009年9月25日 上午 09:28
  • 真的嗎!,(心裡很高興^^),其實我大一所學的程式基礎並沒有接觸到ADO.NET這個技術,我是到大三才開始接觸它的,也還正在摸索,所以也還不是那麼的熟練這個技術,我會再花時間去看這些書的,謝謝前輩的指點。

    2009年9月25日 上午 09:32
  • 感謝"好說"前輩所提供的程式碼,前輩的恩情小弟永遠牢記在心。
    2009年9月25日 下午 02:29
  • 感謝"昭仁"前輩所提供的程式碼,前輩的恩情小弟永遠銘記在心。
    2009年9月25日 下午 02:30