Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Дублирование значения одного поля в другое поле

Access 2013
Имеется два поля со списком.

Нужно: При выборе из списка значения для Поля 1, в Поле 2 дублировалось бы (автоматически подставлялось) это же значение, но с возможностью изменения путем выбора из списка.

Т.е. чаще всего, при заполнении формы, значения этих двух полей одинаковые, но в некоторых случаях могут разниться, поэтому, чтобы пользователю не тратить время на заполнение Поле 2, необходимо, чтобы в форме, автоматически после выбора значения для Поле 1, подставлялось это же значение для Поле 2, но с возможностью изменения в случае необходимости.

Заранее очень благодарю.
Ответ:
Сообщение от ltv_1953
А написать самостоятельно проверку что мешает?
Не злитесь. Мешает отсутствие знаний.

За ответ спасибо, все работает.

Добавлено через 7 минут
Сообщение от mobile
Заведите переменную уровня модуля. Пусть она называется F. На событии формы Текущая запись задавайте ей значение, равное Поле2. На событии после обновления поля со списком, сравнивайте F с текущим значением Поля2. Если оно изменилось, значит было ранее вручную выставлено и его исправлять нельзя.
Спасибо, учту на будущее.
Вопрос: Запрос по нескольким значениям одного поля

Всем привет. Столкнулся с проблемой такого рода:
Мне необходимо создать запрос, который бы брал данные из нескольких таблиц, причем с условием, что мы забираем данные по нескольким значениям одного поля.

SQL
1
SELECT Equipment_unit.ID, TYPE.caption AS ID_type, [VALUES].VALUE, Equipment_unit.Registration_number, [VALUES].VALUE FROM Reestr.dbo.[VALUES], Equipment_unit LEFT JOIN Reestr.dbo.TYPE ON TYPE.ID = Equipment_unit.ID_type WHERE [VALUES].ID_equipment_unit = equipment_unit.id AND [VALUES].ID_properties IN (4, 9) 
Вот такой получился код запроса, но он, понятно, выводит в 2 строчки значения, где сначала оба [Values].Value по [values].ID_properties=4, а второй строчке оба по [values].ID_properties=9.

1Устройство для измерения высоты автосцепкиУстройство для измерения высоты автосцепки над головками рельсов Т1339.00.00019 Устройство для измерения высоты автосцепки над головками рельсов Т1339.00.000
1Устройство для измерения высоты автосцепки201019 2010

Вопрос: как реализовать, чтоб по запросу формировалась одна строка, где сначала бы [Values].Value был по [values].ID_properties=4, а затем по [values].ID_properties=9?
Ответ:
А между третьим и последним столбцами что?
Между ними получается столбец t4.Registration_number.

Итого, последняя конструкция работает! Ура!! Вот какого результата я хотел добиться и добился:
1Устройство для измерения высоты автосцепкиУстройство для измерения высоты автосцепки над головками рельсов Т1339.00.00019 2010

texnik-san, большое спасибо!
Вопрос: Использовать значение одного поля как название другого.

На сайте есть 3 таблицы (в сокращенном виде):
CODE (SQL):

  1. CREATE TABLE `team`
  2. (
  3.   `team_id` INT(11) PRIMARY KEY AUTO_INCREMENT,
  4.   `team_base_id` TINYINT(2) DEFAULT 2,
  5.   `team_basemedical_id` TINYINT(2) DEFAULT 1,
  6.   `team_basephisical_id` TINYINT(2) DEFAULT 1,
  7.   `team_baseschool_id` TINYINT(2) DEFAULT 1,
  8.   `team_basescout_id` TINYINT(2) DEFAULT 1,
  9.   `team_basetraining_id` TINYINT(2) DEFAULT 1
  10.  );

CODE (SQL):

  1. CREATE TABLE `buildingbase`
  2. (
  3.   `buildingbase_id` INT(11) PRIMARY KEY AUTO_INCREMENT,
  4.   `buildingbase_building_id` TINYINT(1) DEFAULT 0,
  5.   `buildingbase_team_id` SMALLINT(5) DEFAULT 0
  6. );

CODE (SQL):

  1. CREATE TABLE `building`
  2. (
  3.   `building_id` TINYINT(1) PRIMARY KEY AUTO_INCREMENT,
  4.   `building_name` VARCHAR(255) NOT NULL
  5. );
  6. INSERT INTO `building` (`building_name`)
  7. VALUES ('base'),
  8.        ('basemedical'),
  9.        ('basephisical'),
  10.        ('baseschool'),
  11.        ('basescout'),
  12.        ('basetraining');

Вопрос: можно ли как-то в одном запросе склеить `building_name` из третьей таблицы с префиксом team и окончанием id и скормить это системе как название поля? Примерно как-то так:
CODE (SQL):

  1. UPDATE `team`
  2. LEFT JOIN `buildingbase`
  3. ON `team_id`=`buildingbase_team_id`
  4. LEFT JOIN `building`
  5. ON `buildingbase_building_id`=`building_id`
  6. SET `team_+building_name+_id`=`team_+building_name+_id`+'1'

Подскажите, пожалуйста, как правильно записать вот эту конструкцию - `team_+building_name+_id`?
Сейчас это делается 6 отдельными запросами (по количеству записей в таблице building). Хотелось бы это все сделать одним запросом.

(Отредактировано автором: 07 Января, 2017 - 21:31:56)

Ответ:
igosja, есть вариант с хранимой процедурой.
Например:
Вопрос: Копирование значений одного поля таблицы одной БД, в другую БД

Добрый день!

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

insert into [TableNew].[dbo].[Employee]([Picture])
select [Picture]
from [TableOld].[dbo].[Employee]
where [TableNew].[dbo].[Employee].[FirstName] = [TableOld].[dbo].[Employee].[FirstName]
    and [TableNew].[dbo].[Employee].[MiddleName] = [TableOld].[dbo].[Employee].[MiddleName]
    and [TableNew].[dbo].[Employee].[LastName] = [TableOld].[dbo].[Employee].[LastName]
    and [TableNew].[dbo].[Employee].[BirthDay] = [TableOld].[dbo].[Employee].[BirthDay]


это не пашет. Просьба ногами сильно не бить. Как получить из таблицы в форме запроса чуть уразумел, а тут не могу понять. Везде разговор идёт в пределах одной базы данных, а из одной БД в другую, чёт не нашёл.

Так при таком раскладе выдаёт ошибку: Не удалось привязать составной идентификатор "TableNew.dbo.Employee.MiddleName" (точнее по 3м). Что я не правильно делаю?
Ответ: Winnipuh,

"заделимитивание" универсальнее.
delimeter меняется, слово остается
Вопрос: Считать - присвоить значение связанному полю подчиненной формы

Сорри, поиск не помог, хотя помню что читал где-то.
Есть главная форма, в ней подчиненная, источником подчиненной формы таблица.
Нужно на открытии формы считать значение одних полей подчиненной и задать другие. Не проходит.
Уже все упростил, просто вешаю в модуле подчиненной на open, load, activate
MsgBox (Me!Имя Поля)

activate просто игнорирует
на load open пишет выражение не содержит значения
а если присваивать полю - то "невозможно присвоить значение объекту"

То есть форма пустая еще. Как выбраться из этого?
Ответ: __Michelle,да, спасибо так вроде получилось.
Вопрос: Выбор значений одного поля в разные столбцы

Всем привет. У меня возникла задача, которую я не знаю, как решить. И не уверен, возможно ли.

Упрощенно:
Есть таблица Article_Person с полями ArticleID и PersonID, где ArticleID - ID книги, PersonID - ID автора книги и внешний ключ для таблицы Person. ArticleID - не уникальный ключ, у одной книги может быть несколько авторов.
И есть таблица Person с информацией об авторах, в ней есть поля PersonID и FullName.

Вот такой запрос:

select ap.ArticleID, p.PersonID, p.FullName
from Article_Person ap
join Person p on p.PersonID = ap.PersonID
where ap.ArticleID in
( '9921', '11122' )

Выдаёт вот такие данные:

9921	9286	Галина Н. Кравец 
9921 9287 Юрий Н. Кравец
9921 11432 и другие
11122 9969 Чарльз де Линт
11122 38629 Галина Викторовна Соловьёва

То есть у первой книги 3 автора, у второй - один.

Моя задача - сделать так, чтобы получить некое подобие Group By ap.ArticleID, но чтобы данные об авторах ( p.PersonID, p.FullName ) выстроить в отдельные столбцы справа от ID. То есть, чтобы получить вот это:

9921	9286	Галина Н. Кравец 	9287	Юрий Н. Кравец 	               11432	и другие 
11122 9969 Чарльз де Линт 38629 Галина Викторовна Соловьёва

Выходит, что в первой строке получается 7 столбцов, а во второй - 5. Для меньшего числа авторов правые столбцы просто останутся пустыми.

Мне не приходит в голову, как это можно сделать. Кто-нибудь может подсказать, в какую вообще сторону стоит посмотреть в этом случае?

Заранее спасибо.
Ответ:
iljy
Если можно взять некое максимальное число столбцов (3,5,7, 100 - не важно, главное. что фиксированное), то подойдет обычный ROW_NUMBER+PIVOT.

Во! Это то, что нужно, большое спасибо. Максимальное число авторов ограничено тремя.

Mike_za
А зачем вам это нужно?
Осмелюсь предположить, что Вы решаете клиентскую задачу средствами сервера?

Да, вы правы. Сам бы я не стал бы заниматься таким идиотизмом.

И на всякий случай, для тех, кто придёт сюда из Гугла, привожу запрос, реализующий сабж. Я его сделал на другой БД, которая была под рукой в данный момент.

select VideoMaterialID, [1] as Episode1, [2] as Episode2, [3] as Episode3
from
(
select
OriginalName,
row_number() over (partition by VideoMaterialID order by OriginalName) num,
VideoMaterialID
from Episode
where VideoMaterialID in ( 100011, 100179 )
) as stbl
pivot
(
MIN(OriginalName) for num in ([1], [2], [3])
) as pvt
order by VideoMaterialID
Вопрос: Как кодом вставить значения одной таблицы в другую не открывая таблицы !?!?

Добрый день.
Подскажите пожалуйста как кодом ВБА не открывая таблицы можно реализовать запись данных из таблицы в таблицу не открывая таблиц.
для примера:существуют две таблицы tbl_91537 и REPORT_TBL с одинаковым набором полей, как из таблицы tbl_91537 вставить данные в REPORT_TBL
Заранее спасибо.
Ответ:
Vasyl.Rudyk
1244,

DoCmd.RunSQL "INSERT INTO Students ( stdID, stdName, gender, phone, address )" & _
"SELECT [forms].[frmStudents].[txtID], [forms].[frmStudents].[txtName], [forms].[frmStudents].[txtGender], [forms].[frmStudents].[txtphone], [forms].[frmStudents].[txtaddress]"

так работает, но почему не хочет понимать "CurrentDb.Execute" причем останавливает код на Me.txtName ,!?!?
очевидно, в Me нет такого поля.
У вас процедура cmdADD_Click находится в модуле той же формы, где расположено это поле txtName (и все прочие, которые перечислены в VALUES)?
Вопрос: Присвоить несколько значений одному полю

Подскажите плиз, вот у меня есть БД, где есть сотрудники, и им присваиваеи имена, фамилии, должности, и телефоны. Так вот как сделать, что бы в колонке телефон, у одного сотрудника было несколько номеров. Как это сделать в MS Access подскажите плиз.
Ответ: Можно использовать перекрестный запрос
Вопрос: Значение одного столбца = значению другого столбца

SELECT FROM WHERE значение одного столбца = значению другого столбца ;
Как построить этот запрос ?
SQL
1
SELECT FamilyName, Name, Patronymic, ClockNumber FROM Storekeepers WHERE Storekeepers.CodeStorekeeper =  'AccountingForDispensingProduct.CodeStorekeeper' ORDER BY FamilyName;
Это будет верно ?
Ответ:
Сообщение от Maksssssss
значение одного столбца = значению другого столбца
То, что в апострофах - это не имя колонки, а строковый литерал. Плюс, если у тебя другой столбец из другой таблицы, то эта таблица тоже д.б. упомянута во FROM.
Вопрос: DISTINCT по одному полю с выводом значений по остальным

Подскажите пожалуйста как сделать DISTINCT по одному полю c максимальной датой чтобы при этом также выводились значения остальных полей. Вот этот вариант выводит только уникальные значения поля ip а все остальные поля (date и id) остаются пустыми. Функция GROUP BY работает крайне медленно и не совсем корректно а также загружает сервер так что он просто зависает на какое-то время.

PHP
1
$db = @mysql_query("SELECT DISTINCT ip FROM " . $CONFIG['database_table_prefix'] . "uservisit ORDER BY date DESC LIMIT $from,$limit");
Ответ: К сожалению я не понимаю как применить эту информацию к моему случаю наверное ввиду того что не являюсь программистом.
Я ничего не смог найти в интернете, вот этот вариант используемый в другой CMS работает очень быстро и полностью корректно, я вижу что в нем используется distinct, но как использовать это к моей ситуации я не понимаю так как синтаксис изначально другой. Вы можете подсказать что нужно добавить в мой sql запрос что-бы получить тот же результат ?
PHP
1
2
3
4
5
6
7
8
9
10
11
function actionVisitorStatistics() {
        $dbC = Yii::app()->db->createCommand();
        $dbC->distinct = true;
        $dbC->select('id, ip as ' . Terms::IP . ',count(ip) as ' . Terms::COUNT . ',Max(date) ' . Terms::LAST_VISITED);
        $dbC->from('uservisit');
        $dbC->order('MAX( date ) DESC');
        $dbC->group('ip');
        $results = $dbC->queryAll();
 
        $this->render('visitorStatistics', array('data' => new CArrayDataProvider($results)));
    }
Добавлено через 21 минуту
Вот этот вариант работает но очень медленно и выводит также несколько одинаковых значений с ip и датой если они присутствуют в таблице.

MySQL
1
$db = @mysql_query("SELECT * FROM  " . $CONFIG['database_table_prefix'] . "uservisit WHERE (ip, date) IN (SELECT ip, MAX(date) FROM uservisit GROUP BY ip) ORDER BY date DESC LIMIT $from,$limit");
Мне всего лишь нужно что-бы при использовании функции DISTINCT помимо вывода уникальных значений IP c максимальной датой выводились и остальные поля, кто знает синтаксис sql пожалуйста подскажите как это сделать ?