Создание Word из данных sql на С#

187
01 мая 2019, 13:30

У меня есть бд. Я подключаюсь к ней и делаю запрос на интересующие поля. Как мне далее полученную информацию поместить в таблицу в Word (если быть точным, то как пустить цикл по полученной информации и как брать её конкретные значения). Возможно, есть вещи которые нужно делать иначе, посоветуйте.

int Rieltor_code = int.Parse(comboBox3.SelectedValue.ToString());
if (comboBox4.Text.Trim() == "Таблица") {
con.Open();
string query = "SELECT \"Object_nedvizimosti\".\"adress\", \"Prodaja\".\"Data\",
              \"Object_nedvizimosti\".\"stoimost\", \"Prodaja\".\"Stoimost\",
              (\"Prodaja\".\"Stoimost\" /\"Object_nedvizimosti\".\"stoimost\") " +
                "FROM \"Prodaja\", \"Object_nedvizimosti\", \"Rieltor\" " +
                "WHERE \"Prodaja\".\"Object_code\" = \"Object_nedvizimosti\".\"object_code\" 
                and" + " \"Object_nedvizimosti\".\"statuc\" = 0
                and \"Prodaja\".\"Rieltor_code\" = \"Rieltor\".\"rieltor_code\""
                + @Rieltor_code ;//еще нужна дата продажи
NpgsqlCommand com = new NpgsqlCommand(query, con);
com.ExecuteNonQuery();
con.Close();
var Ворд1 = new Ворд.Word.Application();
Ворд1.Visible = true;
Ворд1.Documents.Add();
Ворд1.Selection.TypeText("ТАБЛИЦА ОБЪЕКТОВ НЕДВИЖИМОСТИ");
Ворд1.ActiveDocument.Tables.Add(Ворд1.Selection.Range, 30, 5,
Ворд.Word.WdDefaultTableBehavior.wdWord9TableBehavior,
Ворд.Word.WdAutoFitBehavior.wdAutoFitContent);
while (query.Read())
      {
         Ворд1.ActiveDocument.Tables[1].Cell(i, 1).Range.InsertAfter(query.GetValue(1).ToString());
         Ворд1.ActiveDocument.Tables[1].Cell(i, 2).Range.InsertAfter(query.GetValue(2).ToString());
         Ворд1.ActiveDocument.Tables[1].Cell(i, 3).Range.InsertAfter(query.GetValue(3).ToString());
         Ворд1.ActiveDocument.Tables[1].Cell(i, 4).Range.InsertAfter(query.GetValue(4).ToString());
         Ворд1.ActiveDocument.Tables[1].Cell(i, 5).Range.InsertAfter(query.GetValue(5).ToString());
            }
Ворд1.Selection.MoveDown(Ворд.Word.WdUnits.wdLine, 9); ; }
Answer 1

Не из query нужно выполнять метод Read, так как это простая строка, а из переменной com нужно вызвать ExecuteReader(), сохранить возвращаемое значение в отдельную переменную и у же там вызывать Read().

Собственно, на это вам намекает IDE делая красные подчеркивания.

Так же не понятно, зачем вы закрываете тут же соединение, как создали команду.

Что бы не использовать вырвиглазное экраниерование " через \ можно воспользоваться @ перед текстовой строкой.

READ ALSO
Добавление обработчика события в VB.Net

Добавление обработчика события в VB.Net

Какова аналогичная конструкция для следующего в VBNet? Как-то через AddHandler нужно будет?

172
Unity MissingComponentException: There is no 'GameObject' attached to the “BG” game object, but a script is trying to access it

Unity MissingComponentException: There is no 'GameObject' attached to the “BG” game object, but a script is trying to access it

У меня есть GameObject BG , хочу что бы при изменении Toggle он отключался

332
Изменение значений атрибутов name в input

Изменение значений атрибутов name в input

На aspx странице есть форма:

167
Drop drag wpf перетаскивание вкладок ошибка

Drop drag wpf перетаскивание вкладок ошибка

Делаю перетаскивание вкладок,как в браузереВыдает ошибку Операция недопустима, когда ItemsSource используется

209