コード例 #1
0
        private void cmdTestDB_Click(object sender, EventArgs e)
        {
            if (DoValidate())
            {
                string lastStep          = "Initialize values";
                string columnWarningText = "";
                try
                {
                    WMIConfigEntry tmpWMIConfig = new WMIConfigEntry();
                    tmpWMIConfig.Name                = txtName.Text;
                    tmpWMIConfig.Namespace           = txtNamespace.Text;
                    tmpWMIConfig.Machinename         = txtMachines.Text;
                    tmpWMIConfig.StateQuery          = txtStateQuery.Text;
                    tmpWMIConfig.ReturnValueIsInt    = chkIsReturnValueInt.Checked;
                    tmpWMIConfig.ReturnValueInverted = !chkReturnValueNotInverted.Checked;
                    tmpWMIConfig.UseRowCountAsValue  = chkUseRowCountAsValue.Checked;
                    tmpWMIConfig.SuccessValue        = cboSuccessValue.Text;
                    tmpWMIConfig.WarningValue        = cboWarningValue.Text;
                    tmpWMIConfig.ErrorValue          = cboErrorValue.Text;
                    tmpWMIConfig.DetailQuery         = txtDetailQuery.Text;
                    tmpWMIConfig.ColumnNames         = txtColumnNames.Text.ToListFromCSVString();

                    //tmpWMIConfig.KeyColumn = (int)keyColumnNumericUpDown.Value;

                    object returnValue = null;
                    if (tmpWMIConfig.UseRowCountAsValue)
                    {
                        lastStep    = "Run summary query (row count as value)";
                        returnValue = tmpWMIConfig.RunQueryWithCountResult();
                    }
                    else
                    {
                        lastStep = "Run summary query";
                        if (returnValue.IsIntegerTypeNumber())
                        {
                            object currentValue = null;
                            currentValue = tmpWMIConfig.RunQueryWithSingleResult();
                            if (currentValue.IsNumber())
                            {
                                returnValue = (decimal)currentValue;
                            }
                            else
                            {
                                throw new Exception(string.Format("Return value is not an integer!\r\nValue returned: {0}", returnValue));
                            }
                        }
                        else
                        {
                            returnValue = tmpWMIConfig.RunQueryWithSingleResult();
                        }
                    }

                    if (tmpWMIConfig.ReturnValueIsInt)
                    {
                        lastStep = "Test return value is an Integer";
                        if (!returnValue.IsIntegerTypeNumber())
                        {
                            throw new Exception(string.Format("Return value is not an integer!\r\nValue returned: {0}", returnValue));
                        }
                    }
                    //testing detail query
                    lastStep = "Testing detail query - Getting column names";
                    List <DataColumn> columns = tmpWMIConfig.GetDetailQueryColumns();
                    lastStep = "Testing detail query - Custom column name sequence check";
                    StringBuilder sbColumns = new StringBuilder();
                    for (int i = 1; i < columns.Count; i++)
                    {
                        sbColumns.AppendLine(columns[i].ColumnName);
                    }
                    foreach (string columnName in tmpWMIConfig.ColumnNames)
                    {
                        if ((from c in columns
                             where c.ColumnName.ToUpper() == columnName.ToUpper()
                             select c).Count() != 1)
                        {
                            columnWarningText += columnName + ", ";
                        }
                    }
                    if (chkCopyColumnNames.Checked)
                    {
                        Clipboard.SetText(sbColumns.ToString());
                    }

                    lastStep = "Testing detail query";
                    DataSet ds = tmpWMIConfig.RunDetailQuery();
                    if (columnWarningText.Length == 0)
                    {
                        MessageBox.Show(string.Format("Success!\r\nSummary value return: {0}\r\nDetail row count: {1}\r\nDetail columns: {2}", returnValue, ds.Tables[0].Rows.Count, columns.ToCSVString()), "Test", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        MessageBox.Show(string.Format("Success (with warning)!\r\nSummary value return: {0}\r\nDetail row count: {1}\r\nDetail columns returned: {2}\r\nColumns not found: {3}", returnValue, ds.Tables[0].Rows.Count, columns.ToCSVString(), columnWarningText), "Test", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(string.Format("Failed!\r\nLast step: {0}\r\n{1}", lastStep, ex.Message), "Test", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
        }
コード例 #2
0
        private void LoadDetailView()
        {
            lvwDetails.BeginUpdate();
            lvwDetails.Items.Clear();
            lvwDetails.Columns.Clear();
            if (lvwResults.SelectedItems.Count == 1 && lvwResults.SelectedItems[0].Tag is WMIConfigEntry)
            {
                WMIConfigEntry wmiConfigEntry = (WMIConfigEntry)lvwResults.SelectedItems[0].Tag;
                try
                {
                    Cursor.Current = Cursors.WaitCursor;
                    DataSet ds = wmiConfigEntry.RunDetailQuery();
                    if (wmiConfigEntry.ColumnNames == null || wmiConfigEntry.ColumnNames.Count == 0)
                    {
                        foreach (DataColumn currentDataColumn in ds.Tables[0].Columns)
                        {
                            ColumnHeader newColumn = new ColumnHeader();
                            newColumn.Tag  = currentDataColumn;
                            newColumn.Text = currentDataColumn.Caption;

                            if ((currentDataColumn.DataType == typeof(UInt64)) || (currentDataColumn.DataType == typeof(UInt32)) || (currentDataColumn.DataType == typeof(UInt16)) ||
                                (currentDataColumn.DataType == typeof(Int64)) || (currentDataColumn.DataType == typeof(Int32)) || (currentDataColumn.DataType == typeof(Int16)))
                            {
                                newColumn.TextAlign = HorizontalAlignment.Right;
                            }
                            else
                            {
                                newColumn.TextAlign = HorizontalAlignment.Left;
                            }
                            lvwDetails.Columns.Add(newColumn);
                        }
                        foreach (DataRow r in ds.Tables[0].Rows)
                        {
                            ListViewItem lvi = new ListViewItem(FormatUtils.N(r[0], "[Null]"));
                            for (int i = 1; i < lvwDetails.Columns.Count; i++)
                            {
                                lvi.SubItems.Add(FormatUtils.N(r[i], "[Null]"));
                            }
                            lvwDetails.Items.Add(lvi);
                        }
                    }
                    else
                    {
                        foreach (string colname in wmiConfigEntry.ColumnNames)
                        {
                            ColumnHeader newColumn = new ColumnHeader();
                            newColumn.Text = colname;
                            lvwDetails.Columns.Add(newColumn);
                        }
                        foreach (DataRow r in ds.Tables[0].Rows)
                        {
                            string       firstColumnName = wmiConfigEntry.ColumnNames[0];
                            ListViewItem lvi             = new ListViewItem(AttemptFieldRead(r, firstColumnName));
                            for (int i = 1; i < wmiConfigEntry.ColumnNames.Count; i++)
                            {
                                lvi.SubItems.Add(AttemptFieldRead(r, wmiConfigEntry.ColumnNames[i]));
                            }
                            lvwDetails.Items.Add(lvi);
                        }
                    }
                    lvwDetails.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "View details", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    Cursor.Current = Cursors.Default;
                }
            }
            lvwDetails.EndUpdate();
            exportToolStripButton.Enabled = lvwResults.SelectedItems.Count > 0;
        }