...Да
77 2016-03-25 18:07:26
Re: Нужна помощь в создании отчета (16 replies, posted in Russian)
а есть вариант создания временых таблиц?
CREATE TEMPORARY TABLE VremTablitsa
(
id INTEGER PRIMARY KEY ,
Region TEXT ,
Raion TEXT ,
NasPunkt TEXT ,
Magazin TEXT ,
Tsena INTEGER
);
С таблицей можно работать как с обычной только после всех манипуляций надо сделать
DROP TABLE VremTablitsa;
Только учтите что через кнопку можно скормить только один запрос . То есть скормить пачку для расчетов не получится придется скриптом
...можно конечно попробовать сделать вывих мозга и написать один запрос но что-то мне кажется это не получится .
Так же имеет смысл посмотреть в сторону GROUP BY и его производных.
...если за выходные не напишете то я к вам присоединюсь на следующей неделе ( по наличию свободного времени )
78 2016-03-23 09:00:49
Re: Классификатор адресов России (КЛАДР) (10 replies, posted in Russian)
1C сама на SQL работает ( в зависимости от версий )
по идее можно напрямую подключиться к базе . ( если они палок не понавставляли в виде шифрования и прочих прелестей)
79 2016-03-23 06:54:45
Re: Ряд вопросов от новичка. (30 replies, posted in Russian)
if aaa < 0 then
begin
//.....
// Тут мы не сохраняем запись а что нибудь еще например считаем
// .....
end
else
begin
SQLExecute('INSERT INTO sobitiya ( data , sobitie ) VALUES ( '+zakazi.DateTimePicker1.sqlDateTime+', '+ zakazi.Edit1.sqlValue +' )');
end;
80 2016-03-23 06:36:11
Re: Перенос длинных строк в редакторе (2 replies, posted in Russian)
Символ переноса строки это символ с номером 13 его можно вставить с помощью
функции преобразования номера символа в символ chr(13). ( если его надо вставить в скрипте )
...если я правильно понял что вам надо.
http://book.itep.ru/10/ascii.htm
http://www.mysql.ru/docs/man/String_syntax.html
не /n а \n
81 2016-03-20 21:19:12
Re: Ряд вопросов от новичка. (30 replies, posted in Russian)
Правильно будет в запрос передавать sqlValue
Form1.edNom.Text := SQLExecute('SELECT nom FROM primer WHERE number = '+Form1.edNumber.sqlValue );
Но если вам скучно то можно написать и так :
Form1.edNom.Text := SQLExecute('SELECT nom FROM primer WHERE number = '+chr(39)+Form1.edNumber.text+chr(39) );
chr(39) это вставка символа с 39 номером ' ( апостроф )
Таблицу мона глянуть тут например http://book.itep.ru/10/ascii.htm
Так же можете посмотреть пример
82 2016-03-18 12:37:31
Re: Тип поля "Дата" и "Дата/Время" (10 replies, posted in Russian)
SELECT DISTINCT
`vr_zakazi`.`НомерЗаказа`,
`vr_zakazi`.`ДатаЗаказа`,
`vr_klienti`.`Наименование`,
`vr_mediaplan`.`НомерПоздравления`,
`vr_mediaplan`.`ДатаЭфира`,
`vr_mediaplan`.`ВыборБлока0900`,
`vr_mediaplan`.`ВыборБлока1300`,
`vr_mediaplan`.`ВыборБлока2000`,
`vr_adresati`.`Наименование`,
`vr_mediaplan`.`СтатусАктивен`,
`vr_mediaplan`.`СтатусВыполнен`,
`vr_mediaplan`.`ПожеланиеНомер0900`,
`vr_mediaplan`.`ПожеланиеНомер1300`,
`vr_mediaplan`.`ПожеланиеНомер2000`,
`vr_mediaplan`.`Музыка0900`,
`vr_mediaplan`.`Музыка1300`,
`vr_mediaplan`.`Музыка2000`,
`vr_mediaplan`.id
FROM `vr_mediaplan`
LEFT OUTER JOIN `vr_adresati` ON `vr_mediaplan`.`id_vr_adresati`=`vr_adresati`.id
LEFT OUTER JOIN `vr_klienti` ON `vr_mediaplan`.`id_vr_klienti`=`vr_klienti`.id
LEFT OUTER JOIN `vr_zakazi` ON `vr_mediaplan`.`id_vr_zakazi`=`vr_zakazi`.id
WHERE `vr_zakazi`.`ДатаЗаказа` >= '2016-03-18 00:00:00.000'
AND `vr_zakazi`.`ДатаЗаказа` <= '2016-03-18 23:59:59.999" <---- Не из за кавычки вместо апострофа ?
AND `vr_mediaplan`.`ДатаЭфира` >= '2015-12-19 00:00:00.000'
ORDER BY `vr_mediaplan`.`ДатаЭфира` ASC
http://www.mysql.ru/docs/man/String_syntax.html
83 2016-03-17 13:20:11
Re: Что реализовать в первую очередь? (396 replies, posted in Russian)
На широком экране сайт не использует около 40% площади экрана .
84 2016-03-17 13:08:27
Re: Есть реальная проблема со скриптом (11 replies, posted in Russian)
именно такое добавление записи и запрещено дабы не возникло коллизий
SQLExecute('insert into kash (id_azs,date,gotov,Z_A80) SELECT id_azs,date,gotov,Z_A80 FROM kash WHERE date ='+D1+' and id='+azstext+'')
procedure rep_button1_OnClick (Sender: string; var Cancel: boolean);
var
D1, D2: string; //даты 1 и 2 ***где какая ... DataNaUdalenie , DataDlyaZameni ...
azs: integer;//количество записей в справочнике АЗС
idkash,azsx: integer;//переменная - УН записи АЗС
idkash1, azstext: string;
begin
D1 := '"'+ FormatDateTime('yyyy-MM-DD 00:00:00.000', (rep.DateTimePicker1.DateTime)) + '"';
D2 := '"'+ FormatDateTime('yyyy-MM-DD 00:00:00.000', (rep.DateTimePicker2.DateTime)) + '"';
SQLExecute('delete from kash where date = '+D2+'') ; // ***Удалить из таблицы КЭШ записи с датами D2 ? зачем ?
azs:= SQLExecute('SELECT max(id) FROM azs ;') ;//определяем максимальную УН запись в справочнике АЗС для составления цикла
idkash:= SQLExecute('SELECT max(id) FROM kash ;') ;//определяем максимальную УН запись в данных
for azsx:=1 to azs do // цикл создания записей начиная с 1-й записи в справочнике АЗС и заканчивая последней
begin
azstext:=VarToStr (azsx);
if SQLExecute('SELECT count(id) FROM azs WHERE id='+azstext+'') = 1 then // ***Если количество найденных записей с индексом azsx будет = 1 ???***
// ***со временем цикл будет расти пропуская удаленные ID
begin
SQLExecute('insert into kash (id_azs,date,gotov,Z_A80) SELECT id_azs,date,gotov,Z_A80 FROM kash WHERE date ='+D1+' and id='+azstext+''); // *** Тут полный ахтунг выборка из КЭШ по ID из AZS ??? возможно id_azs ?
UpdateDatabase('kash');
end
else ShowMessage ('В справочнике АЗС нет такого УН');
end;
idkash1:=VarToStr (idkash);
SQLExecute('update kash SET date = '+D2+' where id>'+idkash1+'');
UpdateDatabase('kash');
end;
id_azs это наименование запрвки ?
85 2016-03-17 11:06:24
Re: Есть реальная проблема со скриптом (11 replies, posted in Russian)
'update kash SET date = '+D2+'where id IN (select id from kash where id>'+idkash+' )'
86 2016-03-17 09:14:27
Re: Есть реальная проблема со скриптом (11 replies, posted in Russian)
Суть задачи понятна хотя вы нераскрыли полностью сути проблемы.
...но остались вопросы
1. Какова временнАя актуальность таблицы кэш ? ( день , месяц , год ? и нужно ли ее хранить или она меняется каждый день ? )
2. Каким способом происходит сбор данных такого объема ?
3. Зачем вам хранить числа как числа ? Они будут еще где-то использоваться ?
4. Почему бы не сделать редактирование прямо в таблгриде ? ( можно поизвращаться немного но это думаю реализуемо )
87 2016-03-16 19:24:02
Re: Есть реальная проблема со скриптом (11 replies, posted in Russian)
Приветствую,
К сожалению я не могу помочь с алгоритмом, я могу помочь только с конкретным вопросом.
Дмитрий здравствуйте !
Посчитав задачу интересной я хотел человеку помочь и напоролся на баг (ИМХО)
задача состояла в том что бы из таблицы выбрать записи с определенной датой ( я сделал по диапазону дат ) и скопировать эти записи в ту же таблицу но заменив дату на указанную в датетаймпикчере
первая реализация состояла в том чтоб сперва SQL запросом заполнить таблгрид и от туда в цикле от количества записей их скопировать обратно в таблицу с заменой даты. ( работает полностью так как задумано )
Вторая реализация состояла из того что вместо таблгрида я использовал класс TDataSet и тут я вчера вынес себе мозг.....
Проблема состояла в том что вместо того чтоб произвести ОДНУ новую запись SQL запрос уходил в вечную циклическую запись одинаковых строк .
Путем нескольких экспериментов я установил что если вместо даты в запрос скармливать любой текст то все работает так как нужно единственно что вместо даты будет текст , НО если в запрос вставить дату в ТЕКСТОВОМ виде запрос уходит в нирвану .....
Первая реализация:
procedure zakazi_Primenit_OnClick (Sender: string; var Cancel: boolean);
var
i : integer ;
begin
for i := 0 to zakazi.Tabl.RowCount -1 do
begin
SQLExecute('INSERT INTO sobitiya ( data , sobitie ) VALUES ('+zakazi.Ust.sqlDateTime+', '+chr(39)+ zakazi.Tabl.Cells[2,i]+chr(39)+' )');
end;
zakazi.Pokazati.Click ;
end;
Вторая реализация : ( Которая уходит в нирвану)
procedure zakazi_Button1_OnClick (Sender: string; var Cancel: boolean); // Через TDataSet
var
PromTabl : TDataSet; // Объявляем класс TDataSet
begin
// Заполняем класс данными по условию между двух дат (Заполняет корректно)
SQLQuery('SELECT id ,data ,sobitie FROM sobitiya WHERE data Between '+ zakazi.dtFrom.sqlDateTime+' AND '+ zakazi.dtTo.sqlDateTime ,PromTabl);
while not PromTabl.Eof do // Если указатель записи не на конце выполнить
begin // Собственно запрос который уходит в бесконечный цикл записи при наличии даты в тексте
SQLExecute('INSERT INTO sobitiya ( data , sobitie ) VALUES ( '+zakazi.Ust.sqlDateTime+', '+chr(39)+PromTabl.FieldByName('sobitie').AsString+chr(39) +' )');
PromTabl.Next; // Указатель перемещаем на следующую запись
end;
PromTabl.Free;
zakazi.Pokazati.Click ;
end;
творение прикладываю , нужное закоментил.( сделал в версии 2.4 )
...если кому надо внутри есть и выборка по диапазону дат и времени и функция преобразования DateTime в строку для SQL с миллисекундами ( передавать надо через текстовое поле )
88 2016-03-15 11:12:17
Re: Нужна помощь в создании скрипта (9 replies, posted in Russian)
..да только или через временную таблицу через CREATE TEMPORARY TABLE
или как я топорным вариантом ))
поставьте программу посвежее
мой первый вариант откройте .
если хотите для простоты все лишнее уберу совсем
89 2016-03-15 10:51:42
Re: Нужна помощь в создании скрипта (9 replies, posted in Russian)
В общем то что я второй раз написал делать НЕЛЬЗЯ оказывается .
Цитирую букварь.
Целевая таблица команды INSERT не должна появляться в утверждении FROM части SELECT данного запроса, поскольку в ANSI SQL запрещено производить выборку из той же таблицы, в которую производится вставка. (Проблема заключается в том, что операция SELECT, возможно, найдет записи, которые были внесены ранее в течение того же самого прогона команды. При использовании команд, внутри которых содержатся многоступенчатые выборки, можно легко попасть в очень запутанную ситуацию!)
90 2016-03-15 09:50:39
Re: Нужна помощь в создании скрипта (9 replies, posted in Russian)
INSERT INTO sobitiya ( data , sobitie )
VALUES
(
{Ust},
( SELECT sobitie FROM sobitiya WHERE data BETWEEN {dtfrom} AND {dtto} )
)
Переводится так :
ВСТАВИТЬ В ТАБЛИЦУ sobitiya ( data , sobitie )
ЗНАЧЕНИЯ
(
{Ust},
( ВЫБРАТЬ sobitie ИЗ ТАБЛИЦЫ sobitiya С УСЛОВИЕМ ЧТО data НАХОДИТСЯ МЕЖДУ {dtfrom} И {dtto} )
)
Стоит пояснить что я использовал вложенный SQL запрос , и по количеству выданных данных будет произведено соответствующее количество новых записей оператором INSERT
)) и что то он не работает так как надо в отличие от первого варианта
91 2016-03-15 09:34:44
Re: Нужна помощь в создании скрипта (9 replies, posted in Russian)
...хмм , у меня версия 2.4 . Сам скачал и проверил все открывает
отличие вашей задачи лишь в количестве столбцов
У Вас есть установочный версии 1.46 ?
92 2016-03-15 08:41:06
Re: Нужна помощь в создании скрипта (9 replies, posted in Russian)
Есть таблица (скажем kash).
Есть 20 полей. одно из них Дата.
Нужно выбрать все засписи с опредленной датой и продублировать все данные но уже с другой датой.
Подскажите. где то уже видел это на форуме. найти не могу
...это топорный вариант но если смотреть ничего не надо то можно и одним SQL запросом обойтись )))
93 2016-03-11 21:09:10
Re: Тип поля "Дата" и "Дата/Время" (10 replies, posted in Russian)
вот для примера слепил а вообще мы не телепаты Ваш код дистанционно просматривать.
https://yadi.sk/d/IhOkn7XIq6VKX
.... к слову сказать запись даты и времени ( в случае с миллисекундами ) тоже требует танца с бубном
для которого я писал отдельно функцию.
(допускаю что чего-то не понимаю или не знаю)
94 2016-03-04 10:24:34
Re: Ошибка SQL запроса Action -> ПОИСК (1 replies, posted in Russian)
Запрос по кнопке будет так :
SELECT DISTINCT
users.Besday,
users.id
FROM users
WHERE
users.Besday > '2016-03-01 00:00:00.000' AND users.Besday < '2016-03-01 23:59:59.999'
ORDER BY users.Besday ASC
можно так : ( если дата статична )
SELECT DISTINCT
users.Besday,
users.id
FROM users
WHERE
users.Besday > '2016-03-01 00:00:00.000' AND users.Besday < '2016-03-02 00:00:00.000'
ORDER BY users.Besday ASC
можно так:
SELECT DISTINCT
users.Besday,
users.id
FROM users
WHERE
users.Besday Between '2016-03-01 00:00:00.000' AND '2016-03-02 00:00:00.000'
ORDER BY users.Besday ASC
95 2016-03-03 10:04:43
Re: Что реализовать в первую очередь? (396 replies, posted in Russian)
Для полей таблицы добавить свойство "Название по умолчанию" которое будет подставляться в компоненты формы.
Абсолютно не согласен !!! Все имена должны быть прописаны ручками и более того носить ОСМЫСЛЕННЫЕ имена . Когда программа ( проэкт ) разрастается до больших размеров начинается пропарка мозгов : - .... и шо я там писалл ...
и этот момент обычно наступает когда менять имена таблиц , окон , функций и т.д уже ПОЗДНО.!!!
НЕ ЛЕНИТЕСЬ писать осмысленные имена , сами себе потом спасибо скажите.
96 2015-10-08 06:50:31
Re: Редактор скриптов (8 replies, posted in Russian)
Дмитрий как мне вставить в запрос , которым заполняется combobox , опцию DISTINCT ? , для заполнения уникальными полями.
И второй вопрос как отключить возможность пустого выбора ? ( пустая строка при открытии combobox c возвратом -1 )
97 2015-09-25 08:17:00
Re: Редактор скриптов (8 replies, posted in Russian)
Дабы не быть голословным http://rghost.ru/8ZYb8sydq ( Ошибка с DateTimePicker )
спасибо за пример выше !!
98 2015-09-23 20:55:16
Re: Редактор скриптов (8 replies, posted in Russian)
(Подробней о свойстве "Calendar")
Для sql запроса их надо сводить в скрипте
http://rghost.ru/6g7Szx2zV
но и после того как в datatimepicker точно находится то что надо выборка через SQL запрос происходит только по дате но не по времени .
... но прогнав .sqldatetime через поле Edit.text происходит чудо и все сразу ищется и выводится .
...мистика
так же мне непонятно поведение SQLExecute
.Text := SQLExecute( 'SELECT data FROM sd WHERE id=10' ); Работает
.Text := SQLExecute( 'SELECT data FROM sd WHERE id>10' ); Не работает
.Text := SQLExecute( 'SELECT data FROM sd WHERE ORDER BY id' ); Не работает
по всей видимости запрос может передать только одно поле из базы данных
99 2015-09-23 11:38:00
Re: Редактор скриптов (8 replies, posted in Russian)
....нужна не только кнопка сворачивания процедур но и поиск с заменой , а так же при смене имени формы чтоб происходила замена всех обращений к объектам на форме на соответствующее иначе все сразу становится не работоспособным .( это не единственная зависимость )
процедуры и функции лучше оставлять в том виде как они были при сохранении.
есть необходимость двигания выделенного текста вправо влево для придания читабельности.
100 2015-09-22 14:23:50
Topic: Редактор скриптов (8 replies, posted in Russian)
Здравствуйте Дмитрий !
Здравствуйте все ! )))
...когда количество строк кода в пределах сотен то не заметны не дочеты ,
но когда их количество насчитывает тысячи уже неудобно работать.
1. Каждый раз при загрузке проекта все процедуры развернуты.( попробуйте что то найти )
2. Некорректно работает раскрывающийся список свойств
3. Нет подсветки синтаксиса операторов, функций и тд. и тп.
4. Нет встроенной справки по Фастскипту
( просто дописать на русском что какая функция делает и что особенно важно свойства объектов вкратце там где F(x) )
5. Список свойств не работает для скриптовых объектов
6. Не корректно работает DateTimePicker ( 3 ошибки несчитая отсутствия милисекунд )
...что вспомню допишу