Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 25

Изменение позиции реквизита в БД

13.03.2022, 13:53. Показов 2449. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно изменить позицию реквизита в БД. Неудачно определил реквизит типа date не в нужной позиции в таблице. Поменять в SQL нет вопросов. Но как это отразится в источнике данных? Нужно будет корректировать вручную и переподключать источник данных?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.03.2022, 13:53
Ответы с готовыми решениями:

УТ 10.3 Изменение реквизита справочника
Доброго времени суток. Буду очень благодарен за любую помощь. Сразу говорю что сфера для меня совершенно новая. И отдаю себе отчет что для...

Изменение реквизита документа
Реально ли изменить реквизит типа СправочникСсылка.<> в форме при событии-ОбработкаВыбора? &НаКлиенте Процедура...

Повторное изменение реквизита
Нужно изменить реквизит Наименование, при вводе текста в другой реквизит (Фамилия) &НаКлиенте Процедура...

40
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
15.03.2022, 13:43
Студворк — интернет-сервис помощи студентам
Usaga, единственное объяснение, которое мне приходит в голову, почему он говорит об этом, так это чтение из ридера, типа
C#
1
2
var value1 = reader.GetValue(0);
var value2 = reader.GetValue(1);
но может он и DataSet приспособил таким же образом, раз писалось именно про него, хотя, я не знаю, как это вышло.

Добавлено через 1 минуту
но, с другой стороны, судя по выдержке из сообщения
Цитата Сообщение от ngturey Посмотреть сообщение
какие действия нужно сделать в компонентах проекта и каких, если в БД SQL я изменю последовательность (порядок следования) полей!
до кода даже дело не дошло.
0
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 25
15.03.2022, 16:46  [ТС]
Извините, никого не хотел ни чём обвинять, это вы зря. Вижу просто что у некоторых опытных специалистов по C# и VS своя сложившаяся терминология, но не это важно. Вот кусок текста, считываю записи из БД в список! Далее работа со списком, да могу всё переставить в списке и далее без проблем. Но хотел так как хотел, заодно понять что делать если возникнет потребность в корректировке БД. Которая возможно в перспективе появится.

string query = "SELECT * FROM COUNT WHERE date >= @nachDate AND date <= @konechDate";
SqlCommand command = new SqlCommand(query, myConnection);
SqlParameter nachDateParam = new SqlParameter("@nachDate", nachDate);
command.Parameters.Add(nachDateParam);
SqlParameter konechDateParam = new SqlParameter("@konechDate", konechDate);
command.Parameters.Add(konechDateParam);
SqlDataReader reader = command.ExecuteReader();

// List<float[]> data1 = new List<float[]>();
GlobalValues.data.Clear();

while (reader.Read())
{
GlobalValues.data.Add(new string[10]);

GlobalValues.data[GlobalValues.data.Count - 1][0] = reader[0].ToString();
GlobalValues.data[GlobalValues.data.Count - 1][1] = reader[1].ToString();
GlobalValues.data[GlobalValues.data.Count - 1][2] = reader[2].ToString();
GlobalValues.data[GlobalValues.data.Count - 1][3] = reader[3].ToString();
GlobalValues.data[GlobalValues.data.Count - 1][4] = reader[4].ToString();
GlobalValues.data[GlobalValues.data.Count - 1][5] = reader[5].ToString();
GlobalValues.data[GlobalValues.data.Count - 1][6] = reader[6].ToString();
GlobalValues.data[GlobalValues.data.Count - 1][7] = reader[7].ToString();
GlobalValues.data[GlobalValues.data.Count - 1][8] = reader[8].ToString();
GlobalValues.data[GlobalValues.data.Count - 1][9] = reader[9].ToString();
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
15.03.2022, 16:58
Цитата Сообщение от ngturey
Вижу просто что у некоторых опытных специалистов по C# и VS своя сложившаяся терминология
Не по теме конечно. Насчет терминологии. Книжки по теории БД я читал довольно давно, году так в 85-86, поэтому осталось общее понимание, но без конкретики. А вот в документацию приходится лазать по работе значительно чаще. Так вот, по терминологии Oracle есть термин columns, что я никак ни как реквизит, ни как атрибут никак перевести не могу
1
Эксперт .NET
 Аватар для Usaga
14577 / 9479 / 1360
Регистрация: 21.01.2016
Сообщений: 35,759
15.03.2022, 17:03
ngturey, ну, собственно, что и предполагалось: позиционное чтение полей из выборки. Не надо так делать. С выборкой прилетают имена\псевдонимы полей из таблицы (или объединения таблиц). Ридер (reader) позволяет обращаться к ним по именам. Так 99.9% программистов и делает. Делайте и вы. Как я и сказал, проблемы тут тупо нет.
1
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 25
15.03.2022, 17:04  [ТС]
Логично, но почитайте "БАЗЫ ДАННЫХ" Томас Конноли,Каролин Бегг,Анна Страчан! Полное название "DataBase Systems. A Practical Approach to by Design, Implementation, and Managment" И что касается column вы тоже правы. Но это не значит что так и только так!
0
Эксперт .NET
 Аватар для Usaga
14577 / 9479 / 1360
Регистрация: 21.01.2016
Сообщений: 35,759
15.03.2022, 17:06
Цитата Сообщение от ngturey Посмотреть сообщение
Но это не значит что так и только так!
Ну, а как быть тем, кто не читал этих авторов? Явно же какая-то "местная" терминология. Я такую впервые встречаю. И вы, посмотрев документацию на ADO.NET, могли бы уже заметить, что везде и всюду используется "column" и "field", но не "реквизит".
0
 Аватар для Andrey-MSK
3386 / 2272 / 388
Регистрация: 14.08.2018
Сообщений: 7,689
Записей в блоге: 4
15.03.2022, 17:12
Цитата Сообщение от ngturey Посмотреть сообщение
C#
1
GlobalValues.data[GlobalValues.data.Count - 1][9] = reader[9].ToString();
Чтение полей из таблицы БД, и вот в таком виде абсолютно фиолетово какой там порядок полей в таблице и в классе-приёмнике.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
public async Task<List<GPReport>> GetGPReportsAsync(EObject eObject)
{
    List<GPReport> gpReports = new List<GPReport>();
    string sqlText =
        "SELECT ID_GenPlan, ID_EObject, KKS, GPName, TotalWeight, TotalLabor, ErectedWeight, " +
        "ErectedLabor, RemainWeight, RemainLabor " +
        "FROM dbo.vwGenPlanReportNew " +
        "WHERE ID_EObject = @id " +
        "ORDER BY KKS";
 
    using (SqlConnection sqlConnection = new SqlConnection(_connectionString))
    {
        try
        {
            await sqlConnection.OpenAsync();
 
            using (SqlCommand sqlCommand = new SqlCommand(sqlText, sqlConnection))
            {
                SqlParameter paramID = new SqlParameter
                {
                    ParameterName = "@id",
                    Value = eObject.EObjectID,
                    SqlDbType = SqlDbType.Int,
                    Direction = ParameterDirection.Input
                };
                sqlCommand.Parameters.Add(paramID);
 
                using (SqlDataReader sqlDataReader = await sqlCommand.ExecuteReaderAsync())
                {
                    while (await sqlDataReader.ReadAsync())
                    {
                        gpReports.Add(new GPReport
                        {
                            GPlanID = (int)sqlDataReader["ID_GenPlan"],
                            EObjectID = (int)sqlDataReader["ID_EObject"],
                            KKS = sqlDataReader["KKS"] as string ?? "",
                            GPlanName = sqlDataReader["GPName"] as string ?? "",
                            TotalWeight = (double)sqlDataReader["TotalWeight"],
                            TotalLabor = (double)sqlDataReader["TotalLabor"],
                            ErectedWeight = (double)sqlDataReader["ErectedWeight"],
                            ErectedLabor = (double)sqlDataReader["ErectedLabor"],
                            RemainWeight = (double)sqlDataReader["RemainWeight"],
                            RemainLabor = (double)sqlDataReader["RemainLabor"]
                        });
                    }
                }
            }
 
            return gpReports;
        }
        catch (Exception ex)
        {
            throw new ApplicationException("Ошибка загрузки отчета по объектам.", ex);
        }
    }
}
1
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 25
15.03.2022, 17:20  [ТС]
Да, спасибо. В споре или дискуссии, я уже понял что можно по-другому. Но ведь можно и через изменение последовательности столбцов, скажу так, если всем нравится термин столбец, такой путь существует. Я сталкивался с обсуждением такого варианта. Просто тогда для меня это было не актуально. Но отрабатываю все возможные варианты. Так что всё равно поэксперемнтирую, если ни у кого нет точного алгоритма действий! Все СПАСИБО!

Добавлено через 7 минут
А дело не в авторах, а в классике теории и терминологии СУБД, От того что Oracl в техдокументации свою терминологию внёс, но этот термин аналог, ничего не меняется. Поэтому и непонятна реакция на термины-аналоги! Суть ведь эти термины отражают правильную. И почитайте техдокументацию на СУБД от Майкрософт!
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
15.03.2022, 17:23
ngturey,
Цитата Сообщение от ngturey Посмотреть сообщение
Логично, но почитайте "БАЗЫ ДАННЫХ" Томас Конноли,Каролин Бегг,Анна Страчан!
и там в оригинальном тексте (на английском) используется слово "реквизит"?
книги это конечно круто, но такие вот переводчики и адаптаторы называют вещи так, как их не следовало бы называть.
синтаксис создания таблицы говорит прямым текстом: create table (таблица) (column (колонка/столбец) datatype (тип данных)), вот и все.
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
15.03.2022, 17:26
Цитата Сообщение от ngturey Посмотреть сообщение
можно и через изменение последовательности столбцов
Могу сказать следующее. В свое время была утилита для работы с dbf(не помню, как ее звали). Но алгоритм был такой - она сначала создает новую таблицу с нужным порядком имен, потом переписывает туда данные, потом переименовывает старую. Так можно и в SQL, только зачем?
0
Эксперт .NET
 Аватар для Usaga
14577 / 9479 / 1360
Регистрация: 21.01.2016
Сообщений: 35,759
15.03.2022, 17:28
Цитата Сообщение от ngturey Посмотреть сообщение
Но ведь можно и через изменение последовательности столбцов
Можно, но не имеет смысла никакого. Уж больно ненадёжно получается. Добавить (или убрать) одно поле\столбец\реквизит из запроса можно очень просто. А потом гада по номерам, какое поле под каким номером теперь должно быть. В нормальной рабочей практике такое не делают просто потому, что это можно.

Добавлено через 1 минуту
Цитата Сообщение от Grossmeister Посмотреть сообщение
Так можно и в SQL, только зачем?
Подозреваю, что ТС путает DDL и DML. Порядок объявления в таблице и порядок в SELECT'е для него одно и тоже, видимо...
0
 Аватар для Andrey-MSK
3386 / 2272 / 388
Регистрация: 14.08.2018
Сообщений: 7,689
Записей в блоге: 4
15.03.2022, 17:33
Цитата Сообщение от Usaga Посмотреть сообщение
Порядок объявления в таблице и порядок в SELECT'е для него одно и тоже, видимо...
Дак посмотрите на его SELECT
T-SQL
1
SELECT * FROM COUNT WHERE date >= @nachDate AND date <= @konechDate
0
Эксперт .NET
 Аватар для Usaga
14577 / 9479 / 1360
Регистрация: 21.01.2016
Сообщений: 35,759
15.03.2022, 17:35
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Дак посмотрите на его SELECT
Блин, а ещё про умные книги нам говорил... Видимо не очень качественная это была литература. Мало того, что своя терминология, так ещё и таким запросам учит.
0
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 25
16.03.2022, 11:21  [ТС]
Так, вот хамить, грамотный вы наш в запросах, не стоит! Не понравился запрос, так не пишут, подскажи. Я взял пример из инета. И хамство не стоит выпячивать. Спасибо за помощь, из нашего спора я тоже пользу получил!

Добавлено через 4 минуты
Обычное российское хамство с высоты своего понимания вопроса, вместо делового совета рассказывать что фиолетово что нет! Не встречал ещё такого здесь! Россия!
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
16.03.2022, 11:22
ngturey,
Цитата Сообщение от ngturey Посмотреть сообщение
из нашего спора я тоже пользу получил
надеюсь ту, что нужно было сообщение под №22 в сообщение под №1 написать, чтоб не порождать эту пелену сообщений?)
Цитата Сообщение от ngturey Посмотреть сообщение
Не понравился запрос, так не пишут, подскажи
если бы Вы в запросе SELECT перечислили поля, то, очевидно, этой темы даже не возникло бы, так как порядок колонок в нем не изменился бы, несмотря на то, что он изменился в таблице, следовательно, и в коде не нужно было бы ничего менять
2
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 25
16.03.2022, 12:08  [ТС]
Да согласен с вами. Не думал что так принципиальна терминология. Ну чем отличаются по смысловому содержанию термины атрибут и реквизит? А атрибут это термин из теории реляционных СУБД и не важно кто автор. Но если это так принципиально для здесь, принимаю вашу абсолютную точку зрения. Кстати, вопрос, чем в данном контексте принципиально отличаются понятия column и field? Применительно к таблицам БД!

Добавлено через 12 минут
Спасибо. Просто и понятно. Вначале мне неважно было указывать наименование полей. Зачем лишний текст. Мне они все из записи нужны и я ориентировался на их последовательность. Можно через имена. Вот в чём вы правы, в ответе сразу бы сказали и нет всего этого словословия и снобисткого хамства!
0
 Аватар для Andrey-MSK
3386 / 2272 / 388
Регистрация: 14.08.2018
Сообщений: 7,689
Записей в блоге: 4
16.03.2022, 12:36
Цитата Сообщение от ngturey Посмотреть сообщение
Зачем лишний текст.
Затем что * в запросах в приложениях для работы с БД никогда не используют. Да и не только в приложениях, этот знак в SELECT, как и SELECT ALL, нужно забыть и использовать его только по назначению -> умножение.
0
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 25
16.03.2022, 12:51  [ТС]
Спасибо. Я эту строку просто скопировал из примера в инете. На том этапе эти особенности не волновали! Честно скажу от вашего примера я получил море полезного. Спасибо!

Добавлено через 6 минут
Извините, а почему так к "*" в запросах? Смотрю в инете масса примеров.
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
16.03.2022, 12:57
Цитата Сообщение от ngturey Посмотреть сообщение
Извините, а почему так к "*" в запросах?
Ну на самом деле это некоторое преувеличение. Когда запрос довольно простой, то можно использовать и *. А примеры в Инете - это совсем не абсолют, к ним надо относится критически, таки * написать быстрее, чем перечислять поля
0
 Аватар для Andrey-MSK
3386 / 2272 / 388
Регистрация: 14.08.2018
Сообщений: 7,689
Записей в блоге: 4
16.03.2022, 12:59
Цитата Сообщение от ngturey Посмотреть сообщение
Извините, а почему так к "*" в запросах?
Надеюсь вы сами можете ответить на свой вопрос после того что произошло у вас. Если бы написали нужные поля в SELECT то и проблемы бы не было.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.03.2022, 12:59

Изменение реквизита документа-основания
Здравствуйте! Платформа 1С 8.2. Есть документ Акт и Акт2. Акт2 создается на основании документа Акт, ссылка на который хранится в реквизите...

Программное изменение реквизита формы
Здравствуйте. На форме справочника есть поле ввода, с реквизитом &quot;Сотрудник&quot; - выбираются сотрудники организации. у справочника...

Изменение реквизита Справочник физические лица
Добрый день! Имею конфигурацию Розница 2.2 (2.2.7.39) Необходимо через внешнюю обработку изменение реквизитов физического лица, а...

Изменение реквизита Справочника через Документ
Есть заполненный справочник Обучение в котором реквизиты ФИО и возраст например. Есть документ, в котором есть реквизиты ФИО и возраст. Тип...

Изменение табличной части в зависимости от выбранного реквизита
Добрый вечер!Подскажите пожалуйста,есть 2 перечисления и ест 3 табличные части.Неоходимо,чтобы при выборе 1 перечисления,показывало 2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru