MsAccessConnectionEditor.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using System;
  2. using System.Windows.Forms;
  3. using System.Data.OleDb;
  4. using FastReport.Utils;
  5. using FastReport.Forms;
  6. namespace FastReport.Data.ConnectionEditors
  7. {
  8. internal partial class MsAccessConnectionEditor : ConnectionEditorBase
  9. {
  10. private string filter;
  11. private string connectionString;
  12. private void Localize()
  13. {
  14. MyRes res = new MyRes("ConnectionEditors,Common");
  15. gbDatabase.Text = res.Get("Database");
  16. lblDatabase.Text = res.Get("DatabaseFile");
  17. lblUserName.Text = res.Get("UserName");
  18. lblPassword.Text = res.Get("Password");
  19. btnAdvanced.Text = Res.Get("Buttons,Advanced");
  20. lbProvider.Text = Res.Get("ConnectionEditors,Access,Provider");
  21. }
  22. public override void UpdateDpiDependencies()
  23. {
  24. base.UpdateDpiDependencies();
  25. tbDatabase.Image = this.GetImage(1);
  26. }
  27. private void tbDatabase_ButtonClick(object sender, EventArgs e)
  28. {
  29. using (OpenFileDialog dialog = new OpenFileDialog())
  30. {
  31. dialog.Filter = filter;
  32. if (dialog.ShowDialog() == DialogResult.OK)
  33. tbDatabase.Text = dialog.FileName;
  34. }
  35. }
  36. private void btnAdvanced_Click(object sender, EventArgs e)
  37. {
  38. using (AdvancedConnectionPropertiesForm form = new AdvancedConnectionPropertiesForm())
  39. {
  40. OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder(ConnectionString);
  41. builder.BrowsableConnectionString = false;
  42. form.AdvancedProperties = builder;
  43. if (form.ShowDialog() == DialogResult.OK)
  44. ConnectionString = form.AdvancedProperties.ToString();
  45. }
  46. }
  47. private void CbxProvider_SelectedIndexChanged(object sender, EventArgs e)
  48. {
  49. switch (cbxProvider.SelectedIndex)
  50. {
  51. case 0:
  52. filter = Res.Get("FileFilters,MdbFile");
  53. break;
  54. case 1:
  55. filter = Res.Get("FileFilters,MdbFile") + "|" + Res.Get("FileFilters,AccdbFile");
  56. break;
  57. }
  58. }
  59. protected override string GetConnectionString()
  60. {
  61. OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder(connectionString);
  62. builder.DataSource = tbDatabase.Text;
  63. builder.Provider = cbxProvider.SelectedItem.ToString();
  64. if (!String.IsNullOrEmpty(tbUserName.Text))
  65. builder.Add(MsAccessDataConnection.strUserID, tbUserName.Text);
  66. else
  67. builder.Remove(MsAccessDataConnection.strUserID);
  68. if (!String.IsNullOrEmpty(tbPassword.Text))
  69. builder.Add(MsAccessDataConnection.strPassword, tbPassword.Text);
  70. else
  71. builder.Remove(MsAccessDataConnection.strPassword);
  72. return builder.ToString();
  73. }
  74. protected override void SetConnectionString(string value)
  75. {
  76. connectionString = value;
  77. OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder(value);
  78. tbDatabase.Text = builder.DataSource;
  79. if (builder.Provider != "")
  80. cbxProvider.Text = builder.Provider;
  81. object userName;
  82. builder.TryGetValue(MsAccessDataConnection.strUserID, out userName);
  83. tbUserName.Text = userName == null ? "" : userName.ToString();
  84. object password;
  85. builder.TryGetValue(MsAccessDataConnection.strPassword, out password);
  86. tbPassword.Text = password == null ? "" : password.ToString();
  87. }
  88. public MsAccessConnectionEditor()
  89. {
  90. InitializeComponent();
  91. Localize();
  92. CbxProvider_SelectedIndexChanged(null, null);
  93. }
  94. }
  95. }