コード例 #1
0
        private void BuildCompany(string name)
        {
            if (string.IsNullOrEmpty(name))
            {
                MessageBox.Show("BuildCompany command error");
                return;
            }

            if (_databasePath != null)
            {
                string connectionString =
                    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
                    + _databasePath
                    + ";User Id=admin;Password=;";

                string companyNameForCheckpointReading = name.Split('-').First().Trim();

                string queryString =
                    $"SELECT " +
                    $"[{name} - Pytania].[Punkt kontrolny], " +
                    $"[Punkty kontrolne].[Punkt kontrolny], " +
                    $"[{companyNameForCheckpointReading} - Punkty kontrolne].Nazwa, " +
                    $"[{name} - Pytania].Pytanie, " +
                    $"[Kwantyfikowanie].Kwantyfikator, " +
                    $"[{name} - Pytania].Ocena, " +
                    $"[Numer punktu].[Numer punktu], " +
                    $"[{name} - Pytania].Identyfikator, " +
                    $"[{name} - Pytania].Komentarz " +
                    $"FROM (((([{name} - Pytania] INNER JOIN [{companyNameForCheckpointReading} - Punkty kontrolne] ON [{name} - Pytania].[Punkt kontrolny] = [{companyNameForCheckpointReading} - Punkty kontrolne].[Punkt kontrolny]) " +
                    $"INNER JOIN [Kwantyfikowanie] ON [{name} - Pytania].[Kwantyfikowanie] = [Kwantyfikowanie].Identyfikator) " +
                    $"INNER JOIN [Punkty kontrolne] ON [{name} - Pytania].[Punkt kontrolny] = [Punkty kontrolne].Identyfikator) " +
                    $"INNER JOIN [Numer punktu] ON [{name} - Pytania].[Numer] = [Numer punktu].Identyfikator) " +
                    $"ORDER BY [{name} - Pytania].Numer, [{name} - Pytania].Identyfikator;";

                string queryStringWithPage =
                    $"SELECT " +
                    $"[{name} - Pytania].[Punkt kontrolny], " +
                    $"[Punkty kontrolne].[Punkt kontrolny], " +
                    $"[{companyNameForCheckpointReading} - Punkty kontrolne].Nazwa, " +
                    $"[{name} - Pytania].Pytanie, " +
                    $"[Kwantyfikowanie].Kwantyfikator, " +
                    $"[{name} - Pytania].Ocena, " +
                    $"[Numer punktu].[Numer punktu], " +
                    $"[{name} - Pytania].Identyfikator, " +
                    $"[{name} - Pytania].Strona, " +
                    $"[{name} - Pytania].Komentarz " +
                    $"FROM (((([{name} - Pytania] INNER JOIN [{companyNameForCheckpointReading} - Punkty kontrolne] ON [{name} - Pytania].[Punkt kontrolny] = [{companyNameForCheckpointReading} - Punkty kontrolne].[Punkt kontrolny]) " +
                    $"INNER JOIN [Kwantyfikowanie] ON [{name} - Pytania].[Kwantyfikowanie] = [Kwantyfikowanie].Identyfikator) " +
                    $"INNER JOIN [Punkty kontrolne] ON [{name} - Pytania].[Punkt kontrolny] = [Punkty kontrolne].Identyfikator) " +
                    $"INNER JOIN [Numer punktu] ON [{name} - Pytania].[Numer] = [Numer punktu].Identyfikator) " +
                    $"ORDER BY [{name} - Pytania].Numer, [{name} - Pytania].Identyfikator;";

                _company = new Company(name);
                using (OleDbConnection connection = new OleDbConnection(connectionString))
                {
                    try
                    {
                        OleDbCommand command;
                        connection.Open();
                        var    schema = connection.GetSchema("COLUMNS");
                        string expr   = "TABLE_NAME = " + $"'{name} - Pytania'" + " AND COLUMN_NAME = 'Strona'";
                        var    col    = schema.Select(expr);

                        if (col.Length > 0)
                        {
                            command = new OleDbCommand(queryStringWithPage, connection);
                        }
                        else
                        {
                            command = new OleDbCommand(queryString, connection);
                        }

                        OleDbDataReader reader = command.ExecuteReader();
                        reader.Read();
                        Checkpoint chp = new Checkpoint((int)reader[0], (string)reader[1] + " - " + (string)reader[2]);

                        if (col.Length > 0)
                        {
                            chp.AddQuestion(new Question((int)reader[7], reader[3].ToString(), reader[5].ToString(), (string)reader[4], reader[6].ToString(), reader[8].ToString(), reader[9].ToString()));
                        }
                        else
                        {
                            chp.AddQuestion(new Question((int)reader[7], reader[3].ToString(), reader[5].ToString(), (string)reader[4], reader[6].ToString(), "", reader[8].ToString()));
                        }
                        _company.AddCheckpoint(chp);

                        while (reader.Read())
                        {
                            if ((int)reader[0] != _company.CheckpointsList.Last().Id)
                            {
                                chp = new Checkpoint((int)reader[0], (string)reader[1] + " - " + (string)reader[2]);
                                _company.AddCheckpoint(chp);
                            }

                            if (col.Length > 0)
                            {
                                chp.AddQuestion(new Question((int)reader[7], reader[3].ToString(), reader[5].ToString(), (string)reader[4], reader[6].ToString(), reader[8].ToString(), reader[9].ToString()));
                            }
                            else
                            {
                                chp.AddQuestion(new Question((int)reader[7], reader[3].ToString(), reader[5].ToString(), (string)reader[4], reader[6].ToString(), "", reader[8].ToString()));
                            }
                        }

                        reader.Close();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Reading DB error\n\n" + ex.Message);
                    }
                }
            }
        }