powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запись в БД
25 сообщений из 33, страница 1 из 2
Запись в БД
    #39186216
iddqd_win
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ни как не могу разобраться. В таблице несколько полей среди которых есть поля дата(набор дат) и текущая.
Мне нужно для всех дат посчитать разницу с сейчас и записать значения разницы в соответствующие ячейки
Вот код. ТекстБокс тут просто как индикатор. Проблема в следующем - update записывает во все поля одинаковые значения последнего элемента массива, как это исправить?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Dim l As Date
        Dim datemas() As Date
        Dim x As Long
        x = 0
        SqlCom = New OleDbCommand("select Дата from Таблица1", Con)
        Con.Open()
        rs = SqlCom.ExecuteReader()
        ReDim datemas(1)
        If rs.HasRows Then
            While rs.Read()
                l = rs.GetDateTime(0).Date
                x = x + 1
                ReDim Preserve datemas(x)
                datemas(x) = l
            End While
        End If
        rs.Close()
        Con.Close()
        For x = 1 To UBound(datemas)
            TextBox2.Text = TextBox2.Text & x & ". " & datemas(x) & " - " & DateDiff("d", datemas(x), Now.Date) & vbCrLf
            SqlCom = New OleDbCommand("Update Таблица1 set Текущая = '" & DateDiff("d", datemas(x), Now.Date) & "' where Дата = '" & datemas(x) & "'", Con)
            DA = New OleDbDataAdapter(SqlCom)
        Next x



Модератор: Тема перенесена из форума "Visual Basic".
...
Рейтинг: 0 / 0
Запись в БД
    #39186262
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем для этой задачи какие-то ридеры и циклы. Почему просто не выполнить sql-запрос на обновление сразу всей таблицы?

Или программа учебная и надо обязательно через цикл?
...
Рейтинг: 0 / 0
Запись в БД
    #39186313
iddqd_win
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProА зачем для этой задачи какие-то ридеры и циклы. Почему просто не выполнить sql-запрос на обновление сразу всей таблицы?

Или программа учебная и надо обязательно через цикл?

Можно поподробней? Ридеры и циклы не обязательны, просто как одно из решений.
...
Рейтинг: 0 / 0
Запись в БД
    #39186357
iddqd_win
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
И если можно с примером, как из существующей базы извлечь данные из 1 столбца, произвести необходимые расчеты и записать в соответствующую строку соответствующего столбца для каждой из полученных дат, а то моё знакомство с программированием произошло неделю назад и моих знаний не хватает)
...
Рейтинг: 0 / 0
Запись в БД
    #39186358
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
Update Таблица1 set Текущая = НужнаяФормула
...
Рейтинг: 0 / 0
Запись в БД
    #39186359
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iddqd_winа то моё знакомство с программированием произошло неделю назад и моих знаний не хватаетЕсть такой язык - SQL. Он предназначен для манипуляций с данными, находящимися в таблицах базы данных. Так что, помимо книжки по VB, надо взять книжку по SQL для начинающих.
...
Рейтинг: 0 / 0
Запись в БД
    #39186457
iddqd_win
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
Код: sql
1.
Update Таблица1 set Текущая = НужнаяФормула



В коде это есть и вопрос как бы и заключается в написании НужнойФормулы.
Было бы не плохо если бы Вы привили пример как это сделать.

Shocker.Proiddqd_winа то моё знакомство с программированием произошло неделю назад и моих знаний не хватаетЕсть такой язык - SQL. Он предназначен для манипуляций с данными, находящимися в таблицах базы данных. Так что, помимо книжки по VB, надо взять книжку по SQL для начинающих.

И до этого дело дойдёт, но в будущем, а решение нужно сейчас.
...
Рейтинг: 0 / 0
Запись в БД
    #39186477
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iddqd_winвопрос как бы и заключается в написании НужнойФормулы.эта формула будет зависеть от СУБД, которую вы не указали
...
Рейтинг: 0 / 0
Запись в БД
    #39186497
iddqd_win
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
База Access, пардон
...
Рейтинг: 0 / 0
Запись в БД
    #39186501
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iddqd_winБаза Access, пардон
ну там что-то типа того и будет
Код: sql
1.
Update Таблица1 set Текущая = DATEDIFF("d", Дата, Date())

если не заработает, надо глянуть в хелп или спросить в http://www.sql.ru/forum/access
...
Рейтинг: 0 / 0
Запись в БД
    #39186505
iddqd_win
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Я может чего то элементарного не догоняю) уже голова пухнет, вся сложность не в том, что я не знаю как считается datediff, а в том как составить запрос, чтобы он брал даты из столбца Дата, считал разницу для каждой и записывал в соседний столбец, да еще без ридеров и циклов. Что в вашем примере обозначает Дата(date1 которая), откуда берется, как задаётся? Нельзя же просто написать название столбца и он сам её определит, я пробывал))? Можете поподробней обьяснить?
...
Рейтинг: 0 / 0
Запись в БД
    #39186506
iddqd_win
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Даже пусть так:
Dim Дата As Date
Дата = ???? как не запуская ридер получить это значение?
...
Рейтинг: 0 / 0
Запись в БД
    #39186518
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
iddqd_winЧто в вашем примере обозначает Дата(date1 которая), откуда берется, как задаётся? Нельзя же просто написать название столбца и он сам её определит, я пробывал))?
Вы же не удосужились показать структуру ваше таблицы
...
Рейтинг: 0 / 0
Запись в БД
    #39186531
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iddqd_winЧто в вашем примере обозначает Датаэто название поля таблицы, которое я взял из вашего же примера:

iddqd_win
Код: vbnet
1.
 SqlCom = New OleDbCommand("select Дата from Таблица1", Con)


iddqd_winDim Дата As Date
Дата = ???? как не запуская ридер получить это значение?ридер нужен для чтения, а вам не нужно ничего читать. Вам нужно просто выполнить этот код sql, который обновит столбец Текущая непосредственно в БД, забудьте про Dim Дата
...
Рейтинг: 0 / 0
Запись в БД
    #39186583
iddqd_win
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proiddqd_winЧто в вашем примере обозначает Датаэто название поля таблицы, которое я взял из вашего же примера:

iddqd_win
Код: vbnet
1.
 SqlCom = New OleDbCommand("select Дата from Таблица1", Con)


iddqd_winDim Дата As Date
Дата = ???? как не запуская ридер получить это значение?ридер нужен для чтения, а вам не нужно ничего читать. Вам нужно просто выполнить этот код sql, который обновит столбец Текущая непосредственно в БД, забудьте про Dim Дата

Можете показать как это будет выглядеть в коде что в первом сообщении?
Просто если Вы имеете в виду такой код,то он естественно не работает:

Код: vbnet
1.
2.
3.
4.
5.
Sub CurrentDiff()

DT.Clear()
SqlCom = New OledbCommand("update Таблица1 set Текущая = '" & DateDiff("d", Дата, Now.Date) & "'", con)
DA = New OleDbDataAdapter(SqlCom)



Cat2iddqd_winЧто в вашем примере обозначает Дата(date1 которая), откуда берется, как задаётся? Нельзя же просто написать название столбца и он сам её определит, я пробывал))?
Вы же не удосужились показать структуру ваше таблицы

http://radikal.ru/big/3b9d6a1a1f46439881ed9cfae2e71ed5][IMG] http://s50.radikal.ru/i129/1603/0d/909ea3fecf1b.jpg [/IMG]
...
Рейтинг: 0 / 0
Запись в БД
    #39186599
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз!
То, что я написал, не является операторами VB. Это является операторами языка SQL. От VB требуется только одно - выполнить команду SQL, то есть, грубо говоря, одна строка. Не надо вводить никаких переменных в VB, никаких циклов и функций.

Вот вы в своей программе пишете строку:
Код: vbnet
1.
SqlCom = New OledbCommand("update Таблица1 set Текущая = '" & DateDiff("d", Дата, Now.Date) & "'", con)

Вы понимаете, что она делает? Или просто скопировали откуда-то, а разбираться не надо?
...
Рейтинг: 0 / 0
Запись в БД
    #39186601
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
читайте про ExecuteNonQuery
...
Рейтинг: 0 / 0
Запись в БД
    #39186636
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Shocker.Proчитайте про ExecuteNonQuery
И многое другое
...
Рейтинг: 0 / 0
Запись в БД
    #39186657
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2И многое другоенекогда читать, писать надо... ((
...
Рейтинг: 0 / 0
Запись в БД
    #39186667
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Shocker.ProCat2И многое другоенекогда читать, писать надо... ((
Это да, бывает
...
Рейтинг: 0 / 0
Запись в БД
    #39186673
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Shocker.Proпропущено...
некогда читать, писать надо... ((
Это да, бывает
для решения этой проблемы есть форум "работа"
...
Рейтинг: 0 / 0
Запись в БД
    #39186695
iddqd_win
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProЕще раз!
То, что я написал, не является операторами VB. Это является операторами языка SQL. От VB требуется только одно - выполнить команду SQL, то есть, грубо говоря, одна строка. Не надо вводить никаких переменных в VB, никаких циклов и функций.

Вот вы в своей программе пишете строку:
Код: vbnet
1.
SqlCom = New OledbCommand("update Таблица1 set Текущая = '" & DateDiff("d", Дата, Now.Date) & "'", con)

Вы понимаете, что она делает? Или просто скопировали откуда-то, а разбираться не надо?

Как я понимаю отдает запрос по средствам соответствующей библиотеки в бд. То что вы предложили ранее, как я понимаю не будет работать не в каком виде.

Cat2Shocker.Proпропущено...
некогда читать, писать надо... ((
Это да, бывает
ИзопропилCat2пропущено...

Это да, бывает
для решения этой проблемы есть форум "работа"

Это вообще не понятные персонажи - зайти в тему чтобы наоффтопить, не сказав ни одного умного слова. Новый способ поднять ЧСВ??
...
Рейтинг: 0 / 0
Запись в БД
    #39186698
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iddqd_winКак я понимаю отдает запрос по средствам соответствующей библиотеки в бд. То что вы предложили ранее, как я понимаю не будет работать не в каком виде.
неправильно понимаете.

всю работу можно выполнить движком базы данных:
Код: sql
1.
SqlCom = New OledbCommand("update [Таблица1] set [Текущая] = DateDiff(\"d\", [Дата], Date())" , con)


исполнять - SqlCom.ExecuteNonQuery
DateDiff и Date - это функции движка СУБД, Текущая и Дата - поля таблицы Таблица1
...
Рейтинг: 0 / 0
Запись в БД
    #39186700
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iddqd_winкак я понимаю не будет работать не в каком виде.ну раз вы лучше понимаете, зачем вам советы форума?
...
Рейтинг: 0 / 0
Запись в БД
    #39186748
iddqd_win
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилiddqd_winКак я понимаю отдает запрос по средствам соответствующей библиотеки в бд. То что вы предложили ранее, как я понимаю не будет работать не в каком виде.
неправильно понимаете.

всю работу можно выполнить движком базы данных:
Код: sql
1.
SqlCom = New OledbCommand("update [Таблица1] set [Текущая] = DateDiff(\"d\", [Дата], Date())" , con)


исполнять - SqlCom.ExecuteNonQuery
DateDiff и Date - это функции движка СУБД, Текущая и Дата - поля таблицы Таблица1

Так?

Код: vbnet
1.
2.
3.
4.
5.
SqlCom = New OleDbCommand("update [Таблица1] set [Текущая] = DateDiff("d", [Дата], Now.Date)", Con)
        Con.Open()
        SqlCom.ExecuteNonQuery()
        DA = New OleDbDataAdapter(SqlCom)
        Con.Close()
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запись в БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]