Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Помогите разобраться, не запускаются некоторые формы после переноса на планшет(Win 8.1)

Суть такая: База писалась на ноутбуке под Win 7 Access 2010 . Перенёс на планшет(Win 8.1 Access 2010) возникла проблема перестали запускаться некоторые формы(скриншот прикреплен), при этом на другом планшете все запускалось и работало. Помогите разобраться.

К сообщению приложен файл. Размер - 97Kb
Ответ: Для меня это чуть ли не самая противная ошибка на Акцессе, встречался несколько раз, даже на коммерческом приложении возникла, вот здесь: , см. версию 2.0, при запуске вылетает, часть событий также не генерируется.

Референсами в большинстве случаев не лечится, в самом тяжелом случае пришлось всю форму переделывать руками заново, копируя объескы и код, иначе не запускалось, появлялось не на всех машинах. Что это - до сих пор не понимаю, видимо, какое-то повреждение в структуре формы. Побочное явление - не вызываются некоторые события, хотя должны вызываться 100%, например, AfterUpdate. Только пересоздание контрола помогло.

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

Добрый день!

О великий All, помоги разобраться с триггерной функцией.

Есть задача, что при вставке строк в таблицу, в другую таблицу согласно условиям должны попасть/не попасть /удалиться, записи.

Написала триггерную функцию, создала триггер.
Записи в другую таблицу добавляются, но все и еще дублируются. Как я понимаю, условия не отрабатывают, но не могу понять где. . .

В PostgreSQL совсем не сильна, не мой профиль (Мой Ms sql ). Подскажите в какую сторону нужно копать? Версия 9.2



-- создание триггерной функции

CREATE FUNCTION train_discovery_f () RETURNS trigger  -- '
LANGUAGE 'plpgsql'

AS $BODY$
declare _car_id  character varying ;
_d_date  date;
_car_id_opposite  character varying;
_cars_hash  character varying;
_cars_list  character varying;
_car_id_1  character varying ;
_d_date_1  date;
_car_id_opposite_1  character varying;
_cars_hash_1  character varying;
_cars_list_1  character varying;
_rec_dt  timestamp without time zone ;
_rec_dt_1   timestamp without time zone ;
_cars_count  integer  ;




BEGIN 
-- берем последние две записи по минимальному вагону
    select distinct car_id, car_id_opposite,cars_hash,cars_list,d_date, rec_dt, cars_count
    	into _car_id ,_car_id_opposite,_cars_hash,_cars_list, _d_date, _rec_dt ,_cars_count
           from train_discovery
           where _car_id = (case when NEW.car_id_opposite < NEW.car_id then NEW.car_id_opposite else NEW.car_id end)
           and rec_dt in (select max(rec_dt) 
                          from train_discovery where car_id = case when NEW.car_id_opposite < NEW.car_id then NEW.car_id_opposite else NEW.car_id end)
           ;
   select distinct car_id, car_id_opposite,cars_hash,cars_list,d_date, rec_dt
    	into _car_id_1 ,_car_id_opposite_1,_cars_hash_1,_cars_list_1, _d_date_1, _rec_dt_1
           from train_discovery
           where _car_id = (case when NEW.car_id_opposite < NEW.car_id then NEW.car_id_opposite else NEW.car_id end)
           and rec_dt in (select max(rec_dt) 
                          from train_discovery where car_id = case when NEW.car_id_opposite < NEW.car_id then NEW.car_id_opposite else NEW.car_id end
                         and rec_dt <> _rec_dt)
           ;
-- Первая запись в этом дне, или новый головной вагон, запись добавляем
If 
(case when date_part('hour', NEW.rec_dt) between 0 and 4 then date(NEW.rec_dt- INTERVAL '1 day') else date(NEW.rec_dt) end)
<> _d_date  or _car_id is null
 
 then Insert into train_discovery values (
  NEW.rec_id ,
 		NEW.rec_dt,	
 		case when NEW.car_id_opposite < NEW.car_id then NEW.car_id_opposite else NEW.car_id end ,
        case when NEW.car_id_opposite > NEW.car_id and NEW.car_id_opposite is  null then NEW.car_id_opposite else NEW.car_id end ,
        regexp_split_to_table(NEW.cars_list, E'\\,+') ,
     	NEW.cars_list,
        NEW.cars_count,
        NEW.cars_hash,
        NEW.discovery_status,
        case when date_part('hour', NEW.rec_dt) between 0 and 4 then date(NEW.rec_dt- INTERVAL '1 day') else date(NEW.rec_dt) end );

 end if;

     -- Если даты равны, и последняя запись была кривая, а предыдущая была корректная, тогда удаляем кривую и записываем корректную
 If  (case when date_part('hour', NEW.rec_dt) between 0 and 4 then date(NEW.rec_dt- INTERVAL '1 day') else date(NEW.rec_dt) end) =  _d_date 
  and _cars_hash is null and _cars_hash_1 is not null  and _cars_hash_1 = new.cars_hash 
 
then
     -- Удалили пустую запись
     delete from train_discovery 
     where car_id = _car_id and car_id_opposite = _car_id_opposite and cars_hash = _cars_hash
     and cars_list = _cars_list and d_date = _d_datet and  rec_dt = _rec_dt ;
  -- Вставили корректную запись   
    Insert into train_discovery values (
  NEW.rec_id ,
 		NEW.rec_dt,	
 		case when NEW.car_id_opposite < NEW.car_id then NEW.car_id_opposite else NEW.car_id end  ,
        case when NEW.car_id_opposite > NEW.car_id and NEW.car_id_opposite is  null then NEW.car_id_opposite else NEW.car_id end  ,
        regexp_split_to_table(NEW.cars_list, E'\\,+')  ,
     	NEW.cars_list,
        NEW.cars_count,
        NEW.cars_hash,
        NEW.discovery_status,
        case when date_part('hour', NEW.rec_dt) between 0 and 4 then date(NEW.rec_dt- INTERVAL '1 day') else date(NEW.rec_dt) end ); 
 end if; 

   --   Если последний cars_hash был не пустой, а новая запись осталась пустой, добавляем запись.
        
 If ( case when date_part('hour', NEW.rec_dt) between 0 and 4 then date(NEW.rec_dt- INTERVAL '1 day') else date(NEW.rec_dt) end) =  _d_date 
  and _cars_hash is not null and new.cars_hash is null
 
then
  -- добавляем запись  
    Insert into train_discovery values (
  NEW.rec_id ,
 		NEW.rec_dt,	
 		case when NEW.car_id_opposite < NEW.car_id then NEW.car_id_opposite else NEW.car_id end ,
        case when NEW.car_id_opposite > NEW.car_id and NEW.car_id_opposite is  null then NEW.car_id_opposite else NEW.car_id end ,
        regexp_split_to_table(NEW.cars_list, E'\\,+') ,
     	NEW.cars_list,
        NEW.cars_count,
        NEW.cars_hash,
        NEW.discovery_status,
        case when date_part('hour', NEW.rec_dt) between 0 and 4 then date(NEW.rec_dt- INTERVAL '1 day') else date(NEW.rec_dt) end  ); 
 end if;         
 
        
--   Если последний cars_hash был пустой, и новый cars_hash пустой и списки вагонов разные.
If   (case when date_part('hour', NEW.rec_dt) between 0 and 4 then date(NEW.rec_dt- INTERVAL '1 day') else date(NEW.rec_dt) end) =  _d_date 
and  _cars_hash is null and new.cars_hash is null and 
      (  case when _cars_count < new.cars_count
       then  array[_cars_list] <array[_cars_list]
        when _cars_count > new.cars_count
       then  array[_cars_list] >array[_cars_list]
            else 
         array[_cars_list] = array[_cars_list]
       end ) is false
then  
  
     Insert into train_discovery values (
  NEW.rec_id ,
 		NEW.rec_dt,	
 		case when NEW.car_id_opposite < NEW.car_id then NEW.car_id_opposite else NEW.car_id end ,
        case when NEW.car_id_opposite > NEW.car_id and NEW.car_id_opposite is  null then NEW.car_id_opposite else NEW.car_id end ,
        regexp_split_to_table(NEW.cars_list, E'\\,+') ,
     	NEW.cars_list,
        NEW.cars_count,
        NEW.cars_hash,
        NEW.discovery_status,
        case when date_part('hour', NEW.rec_dt) between 0 and 4 then date(NEW.rec_dt- INTERVAL '1 day') else date(NEW.rec_dt) end ); 
 end if;         
     
 return NEW;
END; 
 -- ' 
$BODY$;

-- создание триггера
CREATE TRIGGER trigger_train_discovery
BEFORE  insert ON train_discovery_logging
FOR EACH ROW
EXECUTE PROCEDURE train_discovery_f ();
Ответ: Нашла ошибку, банально оказалась в "кривых руках"
where _car_id = (case when NEW.car_id_opposite < NEW.car_id then NEW.car_id_opposite else NEW.car_id end)

в задание параметра использовала условие параметра _car_id, а надо было car_id.

Всем огромное спасибо.
Вопрос можно закрывать.
Вопрос: помогите разобраться с заданием!

Здравствуйте уважаемые форумчани. Я студент и нам задали задание нужно сделать 12 запросов из базы данных из них 10 я сделал а остальные 2 бьюсь уже 4 день толку нет. Прошу вашей помощи, очень хочу разобраться как сделать эти два оставшихся задания. К сообщение прикрепил winrar архив внутри которого, сама база, задание, и текстовый документ в котором мною выполнены 10 запросов. Очень прошу помочь разобраться с 11 и 12 заданием!


11. Для каждого материала указать количество рабочих из числа рабочих, которые этот материал расходовали, которые работают в бригадах, где количество рабочих меньше среднего. не могу понять как сделать вот эту выделенную жирным часть задания



12. Вывести название бригад с указанием количества рабочих для каждой из них, которые уложились в 20 %- отклонение от среднего по суммарному расходу краски
это вообще не понял =(

К сообщению приложен файл (AutoMaster.rar - 72Kb)
Ответ: 11 - посчитай среднее в подзапросе.
12 - то же, но посчитать границы (умножить на 0.8 и 1.2)
Вопрос: Прошу знатоков помочь разобраться.

Здравствуйте!
Прошу знатоков помочь разобраться.

CREATE TABLE IF NOT EXISTS `tab_anketa_rashod` (
  `login_acc` varchar(128) NOT NULL COMMENT 'Логин',
  `num_ver` int(7) unsigned NOT NULL COMMENT 'Номер версии анкеты',
  `kod_rashod` tinyint(2) unsigned NOT NULL COMMENT 'Код расхода',
  `sum_rashod` decimal(12,2) unsigned NOT NULL COMMENT 'Размер расхода',  

  PRIMARY KEY (`login_acc`,`num_ver`, `kod_rashod`),

  CONSTRAINT `fk_ranketa` FOREIGN KEY (`login_acc`,`num_ver`) REFERENCES `tab_anketa` (`login_acc`,`num_ver`) ON DELETE NO ACTION ON UPDATE NO ACTION
, 
  CONSTRAINT `fk_rashod` FOREIGN KEY (`kod_rashod`) REFERENCES `tab_vid_rashod` (`kod_rashod`) ON DELETE NO ACTION ON UPDATE NO ACTION

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 


CREATE TABLE IF NOT EXISTS `tab_anketa` (
  `login_acc` varchar(128) NOT NULL COMMENT 'Логин',
  `num_ver` int(7) unsigned NOT NULL COMMENT 'Номер версии анкеты',
  `rec_date` datetime NOT NULL COMMENT 'Дата и время записи версии',

  PRIMARY KEY (`login_acc`,`num_ver`),

  CONSTRAINT `fk_acc` FOREIGN KEY (`login_acc`) REFERENCES `tab_accounts` (`login_acc`) ON DELETE NO ACTION ON UPDATE NO ACTION

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE IF NOT EXISTS `tab_accounts` (  
  `login_acc` varchar(128) NOT NULL COMMENT 'Логин',
  `password` varchar(128) NOT NULL COMMENT 'Пароль', 

  PRIMARY KEY (`login_acc`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


Внешний ключ fk_ranketa не создается, fk_rashod - создается.

Если вводим новое поле num_rec в таблице tab_anketa ...

CREATE TABLE IF NOT EXISTS `tab_anketa_rashod` (
  `num_rec` int(12) unsigned NOT NULL,
  `kod_rashod` tinyint(2) unsigned NOT NULL COMMENT 'Код расхода',
  `sum_rashod` decimal(12,2) unsigned NOT NULL COMMENT 'Размер расхода',  

  PRIMARY KEY (`num_rec`, `kod_rashod`),

  CONSTRAINT `fk_ranketa` FOREIGN KEY (`num_rec`) REFERENCES `tab_anketa` (`num_rec`) ON DELETE NO ACTION ON UPDATE NO ACTION
, 
  CONSTRAINT `fk_rashod` FOREIGN KEY (`kod_rashod`) REFERENCES `tab_vid_rashod` (`kod_rashod`) ON DELETE NO ACTION ON UPDATE NO ACTION

) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 


CREATE TABLE IF NOT EXISTS `tab_anketa` (
  `num_rec` int(12) unsigned NOT NULL,
  `login_acc` varchar(128) NOT NULL COMMENT 'Логин',
  `num_ver` int(7) unsigned NOT NULL COMMENT 'Номер версии анкеты',
  `rec_date` datetime NOT NULL COMMENT 'Дата и время записи версии',

  PRIMARY KEY (`login_acc`,`num_ver`),

  CONSTRAINT `fk_acc` FOREIGN KEY (`login_acc`) REFERENCES `tab_accounts` (`login_acc`) ON DELETE NO ACTION ON UPDATE NO ACTION

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE IF NOT EXISTS `tab_accounts` (  
  `login_acc` varchar(128) NOT NULL COMMENT 'Логин',
  `password` varchar(128) NOT NULL COMMENT 'Пароль', 

  PRIMARY KEY (`login_acc`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


Все внешние ключи fk_ranketa и fk_rashod создаются.

В чем подвох?
Ответ: скукотища,

Таблицы создаются в обоих вариантах, не создается внешний ключ fk_ranketa. Таблица tab_vid_rashoda существует, я не стал приводить лишний код, тем более, что внешний ключ fk_rashod создается.

Приведенные варианты отличаются только тем что во втором варианте в таблице tab_anketa_rashod вместо составного ключа login_acc+num_ver используется num_rec и внешний ключ fk_ranketa создается.

Часть составного первичного ключа может быть внешним ключом, но в моем варианте что-то не катит. Что?
Вопрос: Помогите разобраться с заданием

Доброго времени суток. Буду очень признателен если найдется специалист и поможет разобраться с заданием. К сожалению уточнить по нему я ничего не могу - просто надо его сделать, а некоторые вещи не могу понять в силу отсутствия нужного опыта..(
Задание:
Таблица T1(ID int identity(1,1),DocID int,SumDoc float) - заголовок документа
Таблица T2(ID int,Pos int,PosTime datetime,SumPos float) - детали документа

таблицы T1 и T2 не содержат значений
связь между таблицами T1 и T2 по полю ID

insert into T1(DocID, SumDoc) values(1,11.1)
insert into T2(ID,Pos,PosTime,SumPos) values(@@IDENTITY,1,getdate(),2.1)
insert into T2(ID,Pos,PosTime,SumPos) values(@@IDENTITY,2,getdate(),3.4)
insert into T2(ID,Pos,PosTime,SumPos) values(@@IDENTITY,3,getdate(),5.6)

a.
Какой будет результат запроса?
select * from T2
Рассмотреть как можно больше вариантов.

b.
Написать скрипт, который выведет все ID документов, у которых в деталях больше двух позиций.

c.
Написать скрипт, который выведет все ID документов, у которых сумма в заголовке(SumDoc) не равна сумме sum(SumPos) всех позиций документа с точностью до двух знаков после запятой.

d.
Написать скрипт, который выведет все ID документов, у которых нет детальной части.

e.
Написать скрипт, который выведет все позиции(Pos) из детальной части в строку через запятую для заданного ID документа.
Результат для документа из примера должен быть 1,2,3

f.
Написать скрипт, который выведет интервал между ближайшими позициями по времени в секундах для заданного ID документа.
Причем, порядок позиций может не совпадать с порядком по времени.

Все бы ничего - все вроде элементарно но когда создаю и заполняю таблицы, Id второй таблицы у меня null - ну а из-за этого все остальные траблы вылазят.(((
Ответ:
Модератор: Тестовые задания надо делать самостоятельно
Вопрос: Помогите поправить ошибку PHP для MySQL

Есть PHP код, в котором есть одна кнопка и два поля. Нужно после ввода текста в поля и нажатия на кнопку данные отправлялись в MySQL. Но по какой-то причине, поля в базе остаются пустыми. С подключением к базе всё норм, ибо последнее столбец в базе не зависимо от полей заполняется (для этого столбца нету полей, я указал свои значение нужные мне) а вот текст с полей ни как не хочет записываться. В PHP я новичок, по этому знаю мало. Прошу помогите исправить ошибку!
Все данные (Логин, Пароль, Хостинг, Имя БД) от MySQL я удалил, по этому не пишем что я забыл указать данные, я не забыл но для вопроса эти данные не нужны.

+=Вот код
<html>
<tr><td class="t2">ID</td>
<input type="text" name="id" value="<?php echo $_POST["id"]?>" size="20" maxlength="15"></td></tr>
<tr><td class="t2">Nick</td>
<input type="text" name="player" value="<?php echo $_POST["player"]?>" size="20" maxlength="15"></td></tr>
<form method=post>
<input type=submit name=submit value='Play'>
</html>



<?php
/* Соединяемся с базой данных */
$hostname = "ХОСТИНГ"; // название/путь сервера, с MySQL
$username = "ИМЯ ПОЛЬЗОВАТЕЛЯ"; // имя пользователя (в Denwer`е по умолчанию "root")
$password = "ПАРОЛЬ"; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = "НАЗВАНИЕ БД"; // название базы данных

/* Создаем соединение */
$db = @mysql_connect($hostname, $username, $password) or die ("Not connection");
mysql_select_db('game31770_kirikmozgolom', $db);

$id=$_POST["id"];
$player=$_POST["player"];

/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
if (isset($_POST['submit'])) {
if(!mysql_query("INSERT INTO `RunWeb`(`id`, `player`, `Launcher`) VALUES ('$id', '$player', 'start')"));
?>
Ответ: Hittcliff, это не ко мне.
Вопрос: Помогите исправить ошибку с MySQL

Не могу разобраться в чем проблема, в интернете дельных советов тоже не нашел, пришлось обратиться на форум, помогите кто чем может.


MySQL error in file: /iChat_install.php at line 53
Error Number: 1064
The Error returned was:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=ENGINE /*!40101 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci */' at line 11

SQL query:
CREATE TABLE dle_iChat ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `author` varchar(40) NOT NULL default '', `email` varchar(40) NOT NULL default '', `message` text NOT NULL, `ip` varchar(16) NOT NULL default '', `user_group` smallint(5) NOT NULL default '4', PRIMARY KEY (`id`), FULLTEXT KEY `text` (`message`) ) TYPE=ENGINE /*!40101 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci */

К сообщению приложен файл. Размер - 22Kb
Ответ: Все с этим разобрался)
Вопрос: Знатоки MS-SQL и WinServer помогите разобраться.

Есть Failover Cluster, Windows 2012R2 Server x64 Standard. Кластер из 2х нод, кворум - файловая шара.
На ней SQL 2014, print @@version
Microsoft SQL Server 2014 - 12.0.4100.1 (X64) 
Apr 20 2015 17:29:27
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )
AlwaysOn настроен, без listener.

Появилась задача сделать listener. Скрипт:
USE [master]
GO
ALTER AVAILABILITY GROUP AsyncAvailabilityGroup ADD LISTENER N'SQLList'
(WITH IP ((N'172.22.0.110', N'255.255.255.0')), PORT=1433);
GO

Вываливает ошибку:
Msg 19471, Level 16, State 0, Line 3
The WSFC cluster could not bring the Network Name resource with DNS name 'SQLList' online.
The DNS name may have been taken or have a conflict with existing name services,
or the WSFC cluster service may not be running or may be inaccessible.
Use a different DNS name to resolve name conflicts, or check the WSFC cluster log for more information.

Msg 19476, Level 16, State 4, Line 3
The attempt to create the network name and IP address for the listener failed.
The WSFC service may not be running or may be inaccessible in its current state,
or the values provided for the network name and IP address may be incorrect.
Check the state of the WSFC cluster and validate
the network name and IP address with the network administrator.

На тесте локально на виртуалках поднял кластер, олвизон. Добавляю листнер - все ОК. Вопрос в настройках винды, насколько я понимаю. Или в политиках, или в правах. SQL служба работают из под доменной учетки. Права дал, пока, для отладки: кластерному имени, нодам обеим и учетке из под которой работает служба SQL - Domain Admins - т.е. максимальные.


В чем причина может быть? Куда копать млин?
Ответ: Да, разобрался, в правах кластерному имени было дело... Просто права видимо в АД не умею толком раздавать. Включал MemberOf у DBCLUSTER в роль DomainAdmins - не помогало.
В итоге, создал в АД, комп с желаемым именем LISTENER, этому компу дал права что бы DBCLUSTER имел фул контрол над этим объектом, за disable этот объект и после этого лиснер создался.
Вопрос: Помогите разобраться со структурой

Что не так у меня в таблице сотрудники? Почему выдает ошибку? Или это надо руками данные править? Таблица не пустая. Если надо, то к какому виду надо привести данные?

К сообщению приложен файл. Размер - 56Kb
Ответ:
Photografer
Но теперь новая ошибка вылезла

Ну так закройте все таблицы, запросы и форма, которые используют эту таблицу.
Вопрос: Помогите разобраться с ora-00933 и ora-06512

Всем привет! Помогите, пожалуйста, разобраться:

Есть функция возвращающая nested table.
Внутри используется динамический sql ( execute immediate l_query_str bulk collect into l_return_tbl_oper;). Запрос в l_query_str корректный(распечатал его dbm_output'ом, прогнал - пашет как надо).

Собственно, потом хочу посмотреть на строки этой nested table следующим образом:
select value(t) from table(uni_test_sz.save_conditions_pkg.tblfunc_get_operation('...', '...')) t , при выполнении получаю ora-00933 и ora-06512
Ответ: israelshamir,

отбой, разобрался. вся проблема во вставке данных в nested table