Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для Vlad11
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
.NET 4.x

Ошибка в конструкции команды Select (копирование данных из одной таблицы в другую)

11.09.2014, 12:45. Показов 2413. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Копирую данные из одной таблицы в другую:
VB.NET
1
2
3
4
5
        Connect1.Open()
        Dim cSQL As String = String.Format("Select * INTO Tabl2 From Tabl1 WHERE Data={0}", mData)
        Dim Command1 As New OleDb.OleDbCommand(cSQL, Connect1)
        Command1.ExecuteNonQuery()
        Connect1.Close()
Ошибка: " Ошибка синтаксиса (пропущен оператор) в выражении запроса 'Data=10.09.2014 0:00:00'."

Помогите пожалуйста исправить.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.09.2014, 12:45
Ответы с готовыми решениями:

Копирование данных из одной таблицы в другую в пределах одной базы. Не работает счетчик
Делаю копирование данных из одной таблицы в другую в пределах одной базы. procedure TForm16.Button2Click(Sender: TObject); var ...

Копирование данных из одной таблицы в другую
procedure TForm10.sTreeViewEx1Change(Sender: TObject; Node: TTreeNode); begin if streeviewex1.Selected.SelectedIndex=2 then while...

Копирование данных из одной таблицы в другую.
Доброго всем времени суток. Возникла такая проблема. Есть две таблицы - исходная Сотрудники (Имя, Фамилия, Отчество, должность) и ...

29
 Аватар для Vlad11
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
16.09.2014, 11:03  [ТС]
Студворк — интернет-сервис помощи студентам
miron_npc,
попробовал:
не работает :
VB.NET
1
2
         Dim conn As New OleDbConnection
         Dim comm As New OleDbCommand
заменил на
VB.NET
1
2
3
4
5
6
7
8
9
10
        Dim mData As Date
        mData = DateTimePicker1.Value
        Dim conn As New OleDb.OleDbConnection
        Dim comm As New OleDb.OleDbCommand
        conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Path
        conn.Open()
        comm.Connection = conn
        comm.CommandText = "Select * INTO tabl2 From tabl1 WHERE mData=" & "#" & Month(mData) & "/" & DateAndTime.Day(mData) & "/" & Year(mData) & "#"
        comm.ExecuteNonQuery()
        Close()
ошибка: " Отсутствует значение для одного или нескольких требуемых параметров."
0
0 / 0 / 2
Регистрация: 15.09.2014
Сообщений: 18
16.09.2014, 11:12
Лучший ответ Сообщение было отмечено Vlad11 как решение

Решение

Vlad11,

Обратите внимание на последнее сообщение на первой странице, там более "удобный" перевод формата даты.

Не работает у вас скорее всего потому что столбец даты в Access называется не mDate как указано в примере моего запроса.

VB.NET
1
comm.CommandText = "Select * INTO tabl2 From tabl1 WHERE
mData
VB.NET
1
= & "#" & Month(mData) & "/" & DateAndTime.Day(mData) & "/" & Year(mData) & "#"
0
 Аватар для Vlad11
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
16.09.2014, 11:40  [ТС]
Цитата Сообщение от miron_npc Посмотреть сообщение
Vlad11,
Я смею предположить что у Вас региональный формат даты в Windows не совпадает с региональным форматом даты Access. То есть Access при SQL запросе понимает только американский формат аля "mm/dd/yyyy".
Я обращал на это внимание но в случае заполнения данными таблицы1 использую тот же DateTimePicker:
и выполняю конструкцию SQL INSERT INTO - и там нет такого несоответствия.

я уже напрочь запутался

Добавлено через 6 минут
Цитата Сообщение от miron_npc Посмотреть сообщение
Vlad11,
Обратите внимание на последнее сообщение на первой странице, там более "удобный" перевод формата даты.
Не работает у вас скорее всего потому что столбец даты в Access называется не mDate как указано в примере моего запроса.
Код Visual Basic .NET
1
comm.CommandText = "Select * INTO tabl2 From tabl1 WHERE
mData
Код Visual Basic .NET
1
= & "#" & Month(mData) & "/" & DateAndTime.Day(mData) & "/" & Year(mData) & "#"
так а тут поподробней
поле в таблице называется data
mData - переменная содержащая выбираемую для запроса дату
0
0 / 0 / 2
Регистрация: 15.09.2014
Сообщений: 18
16.09.2014, 11:45
Лучший ответ Сообщение было отмечено Vlad11 как решение

Решение

Дело не в этом.
Если вносить данные вносятся через DateTimePicker с помощью конструкции INSERT INTO это одно, а вот если вы начинаете делать выборку в WHERE это другое.

К примеру вы в Access пишите SQL запрос в виде

SQL
1
SELECT * FROM tabl1 WHERE DATE = 16.09.2014
Он не заработает, потому что при выборке даты в Access необходимо чтобы дата была в формате

SQL
1
SELECT * FROM tabl1 WHERE DATE = #09/16/2014#
В вашем случае вы также подставляйте дату которая у вас представлена в виде DD.MM.YYYY как указано в настойках Windows
То есть когда вы в запрос подставляете значение даты в коде VB он подставляет дату в формате именно DD.MM.YYYY, а не #MM/DD/YYYY# который понятен Access. Поэтому он вашу дату не воспринимает как дату.
0
 Аватар для Vlad11
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
16.09.2014, 11:50  [ТС]
miron_npc,
вот что я проглядел :

.....WHERE mDate=" &......

mDate - переменная а надо поле Data

.....WHERE Data=" &.....

СПАСИБО! РАБОТАЕТ!
:black_eye.:
0
0 / 0 / 2
Регистрация: 15.09.2014
Сообщений: 18
16.09.2014, 11:50
Рад что удалось помочь=)
0
 Аватар для Vlad11
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
16.09.2014, 12:03  [ТС]
miron_npc,
Большое Вам спасибо!
Сейчас пойду очки куплю, для повышения внимательности

но так и не понимаю - почему для заполнения таблицы не надо преобразовывать формат даты а для поиска
надо
0
0 / 0 / 2
Регистрация: 15.09.2014
Сообщений: 18
16.09.2014, 12:43
При вводе данных в виде подстановки проблем не возникнет.

SQL
1
INSERT INTO tabl1 VALUES ('123', '16.09.2014');
или

SQL
1
INSERT INTO tabl1 VALUES ('123', #09/16/2014#);

Неважно, работать будет.

Но вот если делать выборку SQL Access, обрабатывать дату в WHERE он будет только если она представлена именно в том формате, который для него понятен. При подстановке даты из переменной, она подставляется в формате который используется согласно региональным настройкам windows, по умолчанию. Но такой формат для SQL запроса в Access невозможен, он дату просто не воспримет как дату как минимум (к примеру с датой 16.09.2014) потому что 16-го месяца нет. Как максимум она в принципе не соответствует формату #MM/DD/YYYY# т.к. формат DD.MM.YYYY

Работать такой запрос просто не будет в Access.

SQL
1
SELECT * FROM tabl1 WHERE DATA = 16.09.2014;
Зато этот проблем не вызовет

SQL
1
SELECT * FROM tabl1 WHERE DATA = #09/16/2014#;
А значит нужно при подстановке даты в запрос необходимо перевести дату в понятный для запроса формат.

Конечно все более подробно можно почитать на msdn =)
0
 Аватар для Vlad11
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
16.09.2014, 16:55  [ТС]
miron_npc,
Ясно. Спасибо.
просто исходил из посыла -что если данный вариант работает в случае записи данных в таблицу, то он однозначно должен работать в случае запроса, а то что я вижу различие в содержимом переменной и таблицы Access, в действительности они идентичны, а только сам Access показывает их в таком виде согласно настройкам Windows
0
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
16.09.2014, 20:28
mData=#12:00:00 AM#
Такое значение может быть только в случае если в DataTimePicker не выбрана дата
DateTimePicker.value имеет формат DateTime соответственно формата "mmddyy" не имеет и если в БД соответствующая колонка имеет формат DateTime ни каких проблем быть не может
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.09.2014, 20:28

Копирование данных с одной таблицы в другую
Подскажите пожалуйста запрос на копирование данных с одной таблицы в другую, где поля одинаковы. Заранее спасибо!!!

Копирование данных из одной таблицы в другую
Здравствуйте, Уважаемые Форумчане! База данных называется test. Помогите, пожалуйста с запросом в БД MySQL. Нужно скопировать данные из...

Копирование данных из одной таблицы в другую
Есть два файла с разными таблицами, надо по номеру из 3-го столбца в одной таблице найти и скопировать данные из другой. Как в примере в...

Копирование данных из одной таблицы в другую.
Всем добрый день. Есть задача, суть её состоит в том, что в одной таблице существуют 2 поля, 1-е поле содержит данные, а 2-е поле должно...

Копирование данных из одной таблицы в другую
хочу копировать из одной таблицы на другой. Но дает ошибку.. procedure TForm1.Button1Click(Sender: TObject); begin try ...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru