Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];

Вниз

откат изменений в БД   Найти похожие ветки 

 
Александр_2012   (2014-03-21 15:02) [0]

Добрый день.
Подскажите как откатить изменения в  таблице БД после того, как отработан Post. Правильность заполнения основной таблицы БД проверяется с помощью SQL-запросов, прописанных в отдельной таблице. Но для того чтобы запрос отработал необходимо, чтобы данные были занесены в основную таблицу, т.е. метод Post отработал. Но если обнаружена ошибка в заполнении необходимо откатить изменения. Как это сделать?


 
RWolf ©   (2014-03-21 15:06) [1]

задействовать механизм транзакций используемой БД.
хотя, подозреваю, тут архитектуру приложения чинить надо.


 
Александр_2012   (2014-03-21 15:14) [2]

Есть ряд правил заполнения основной таблицы, причём они могут изменяться, поэтому проверка правильности вынесена в отдельную таблицу. Поэтому просто не представляю как изменить программу. А как задействуется механизм транзакций? Можно пример или ссылку?


 
Inovet ©   (2014-03-21 15:58) [3]

> [2] Александр_2012   (21.03.14 15:14)
> А как задействуется механизм транзакций?

А БД какая скажешь наконец?


 
Александр_2012   (2014-03-24 09:25) [4]

Oracle


 
Inovet ©   (2014-03-24 09:48) [5]

> [4] Александр_2012   (24.03.14 09:25)

Какой тогда ещё метод Post, если есть специальный язык - SQL называется, в нём много чего есть вообще, а уж в Оракле и ещё больше. А в частности всё это делается в рамках транзакций. Не надо пользоваться всякими TTable.


 
clickmaker ©   (2014-03-24 09:51) [6]

> с помощью SQL-запросов, прописанных в отдельной таблице

это как?


 
Александр_2012   (2014-03-24 10:40) [7]

clickmaker ©
Есть зависимость между значениями разных полей в основной таблице. Эта зависимость устанавливается распоряжениями руководства и может изменяться. Поэтому в отдельной таблице есть запросы позволяющие проверить правильность заполнения основной таблицы. Сейчас эта проверка производится на BeforePost, что неверно, т.к. введённых данных в таблице ещё нет и SQL-запрос вернёт ошибку (ошибки). Поэтому приходится как-бы дважды делать сохранение данных. Первый раз чтобы занести данные в таблицу, второй раз чтобы фактически сделать проверку. (Запросы типа: select Count(*) from table1 where pole1=1 and pole2<>5. Т.е. проверка, если pole1=1, то pole2 должно быть равно только 5. Если count(*) вернёт значение>0, значит есть ошибка)

Inovet ©
Сначала использовал OraQuery, но столкнулся с ситуацией, что когда в каком-нибудь поле забиваешь значения (надо оставить значение пустым), то при сохранении выскакивала ошибка о недопустимости значения, хотя в таблице все поля, кроме ключа, могут иметь значение "пусто". Изменил OraQuery на OraTable  и проблема ушла. Да и на SQL метод Post никто не отменял. Буду рад подсказке как реализовать требуемую проверку без Post или с ним.


 
clickmaker ©   (2014-03-24 10:44) [8]

> Запросы типа: select Count(*) from table1 where pole1=1
> and pole2<>5

а почему бы не делать эти проверки до внесения данных?


 
Александр_2012   (2014-03-24 10:50) [9]

clickmaker ©
Хороший вопрос. А как? Подскажите. Разве можно выполнить SQL-запрос к таблице, пока данные в неё не занесены? В смысле запрос-то сделать можно, только он вернёт информацию о ранее внесённых данных, а не о тех, которые оператор набрал в DBEdit-ах, но ещё не подтвердил. Так ведь?


 
Dennis I. Komarov ©   (2014-03-24 11:02) [10]


> Изменил OraQuery на OraTable  

Вот он волшебный метод...

> Да и на SQL метод Post никто не отменял.

Чего-чего?

> которые оператор набрал в DBEdit-ах,

Вот их и надо выбросить первым делом.
Есть хранимые процедуры, пакеты... Читай про них...
А проверка лабуды, которую хотят внести в БД должна быть до внесения. Нечего всякий мусор туда тащить...


 
Александр_2012   (2014-03-24 11:16) [11]

Dennis I. Komarov ©

> Да и на SQL метод Post никто не отменял.

Неточно выразился, хотел сказать у компонентов, работающих с SQL, т.е. OraQuery.

> которые оператор набрал в DBEdit-ах,

Вот их и надо выбросить первым делом.

Т.е. я правильно понял, что вместо DBEdit лучше использовать Edit и программно обрабатывать?


 
clickmaker ©   (2014-03-24 11:20) [12]

> вместо DBEdit лучше использовать Edit и программно обрабатывать?

ну это уже от конкретной задачи зависит. Иногда лучше. Но и с DB-версиями можно валидацию делать. Н-р, TField.OnSetText, OnValidate


 
Dennis I. Komarov ©   (2014-03-24 11:23) [13]


> Т.е. я правильно понял, что вместо DBEdit лучше использовать
> Edit и программно обрабатывать?

Не важно откуда будет браться ин-фа. По-хорошему (правильному) delphi-прогер не должен задумываться о структуре БД. В БД должен быть реализован интерфейс для добавления некой конечной сущности (документ, проводка, списание со склада и т.п.) в виде хранимой процедуры.

Данные проверил, передал в хранимку, получил результат...


 
clickmaker ©   (2014-03-24 11:25) [14]

> По-хорошему (правильному) delphi-прогер не должен задумываться
> о структуре БД

Это если delphi-прогеру крупно повезло, и в конторе есть специально выделенный db-прогер. Но так далеко не всегда и не везде


 
Александр_2012   (2014-03-24 11:28) [15]

У меня на нескольких вкладках визуализируется порядка сотни полей БД. Если использовать Edit, то при пролистывании БД придётся написать довольно большой фрагмент кода, который будет обновлять информацию во всех Edit-ах.

>TField.OnSetText, OnValidate
Спасибо, подумаю, как это можно использовать для решения задачи.


 
Dennis I. Komarov ©   (2014-03-24 11:33) [16]


> Это если delphi-прогеру крупно повезло, и в конторе есть
> специально выделенный db-прогер. Но так далеко не всегда
> и не везде

А тогда и нечего на Оракуль смотреть :)


> У меня на нескольких вкладках визуализируется порядка сотни
> полей БД. Если использовать Edit, то при пролистывании БД
> придётся написать довольно большой фрагмент кода, который
> будет обновлять информацию во всех Edit-ах.


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

GUI - переделать;
DB-архитектуру - скорее всего тоже...


 
turbouser ©   (2014-03-24 11:36) [17]

А что мешает вставлять данные в ХП? Там же и все проверки реализовать


 
Dennis I. Komarov ©   (2014-03-24 11:43) [18]


> Там же и все проверки реализовать

Не всегда можно (удобно) проверки в ХП делать, Например валидность ИНН.
Да и не БД-шное это дело :) БД должна проверять на предмет валидности своей архитектуры, а не контента


 
turbouser ©   (2014-03-24 11:52) [19]


> Dennis I. Komarov ©   (24.03.14 11:43) [18]

Естественно не все проверки (хотя с тем же ИНН проверку на сервере сделать не трудно. Да и потом удобно в запросах скаляркой пользоваться :) )
Но логические (а судя по тому что у автора куча запросов - таки проверяется логика) вполне разумно делать в хранимке.


 
clickmaker ©   (2014-03-24 11:57) [20]

> если pole1=1, то pole2 должно быть равно только 5

такие проверки лучше делать на клиенте. с выдачей соответствующего ругательства при фэйле, либо ограничением в самом контроле


 
Inovet ©   (2014-03-24 13:12) [21]

> [20] clickmaker ©   (24.03.14 11:57)
> такие проверки лучше делать на клиенте.

Ну видишь, там сами проверки меняются от случая к случаю, видимо, по каким-то признакам. Наверное, можно хранить выражения, которые с подставленными (в параметрах) значениями выполнять на сервере. Что-то мне кажется, что база эта в стиле таблиц Ексель сделана.


 
Inovet ©   (2014-03-24 13:24) [22]

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


 
Dennis I. Komarov ©   (2014-03-24 14:29) [23]


> хотя с тем же ИНН проверку на сервере сделать не трудно.

Да ну нафиг, там же разряд ключуется...


 
Dennis I. Komarov ©   (2014-03-24 14:33) [24]


> Да ну нафиг, там же разряд ключуется...

+
и потом, это работа как раз GUI, юзер должен видеть что вводит...


 
Александр_2012   (2014-03-24 15:14) [25]

Dennis I. Komarov ©
>И кому нужна такая визуализация? Информация должна отображаться когда необходима, а не чтоб было...

Именно необходимы все поля для визуализации. Скажем подробная информация об объекте.

>А тогда и нечего на Оракуль смотреть :)

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

turbouser ©   (24.03.14 11:36) [17]

>А что мешает вставлять данные в ХП? Там же и все проверки реализовать

ХП - это что?

Оператор, вводя значения в ячейки вполне может ошибиться, также, как и человек, предоставивший информацию, поэтому при сохранении (в идеале) производится проверка по всем существующим взаимосвязям и при обнаружении ошибки или ошибок запись в БД должна блокироваться с выводом сообщений об ошибках.

Inovet ©   (24.03.14 13:24) [22]

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

Я это понимаю, но не могу придумать другого способа реализовать множественные проверки (на сегодняшний день порядка 60), причем условия и количество проверок у нас могут меняться 1-2 раза в год. Т.е. нужна возможность легко изменять условия проверки. А писать анализатор строковых выражений - это очень сложно.


 
clickmaker ©   (2014-03-24 15:24) [26]

> анализатор строковых выражений

если условия не сильно запутанные, то достаточно таблицы вида
Field FieldValue DependentField DependentFieldMin DependentFieldMax
-------------------------------------------------------------------
Pole1 1          Pole2          5                 5    
Pole1 1          Pole3          10                15
...


 
turbouser ©   (2014-03-24 15:26) [27]

http://docs.oracle.com/cd/B28359_01/appdev.111/b28843/tdddg_procedures.htm


 
Dennis I. Komarov ©   (2014-03-24 15:31) [28]


> Именно необходимы все поля для визуализации. Скажем подробная
> информация об объекте.

Вот не надо только сказки рассказывать... Так прям все поля сразу всех "объектов". Не верю!!!


 
Dennis I. Komarov ©   (2014-03-24 15:36) [29]


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

Так про выбор СУБД вопрос не стоит, только вот программиста к ней в поставке нет


> Я это понимаю, но не могу придумать другого способа реализовать
> множественные проверки (на сегодняшний день порядка 60),
>  причем условия и количество проверок у нас могут меняться
> 1-2 раза в год. Т.е. нужна возможность легко изменять условия
> проверки. А писать анализатор строковых выражений - это
> очень сложно.


А не надо придумывать... Все уже давно придумали и даже рассказали.

А если честно, то учебник по PL-SQL в зубы и грызть, грызть, грызть... начиная с самых основ: SELECT, INSERT, DELETE, JOIN, ...


 
Dennis I. Komarov ©   (2014-03-24 15:40) [30]


> причем условия и количество проверок у нас могут меняться
> 1-2 раза в год. Т.е. нужна возможность легко изменять условия
> проверки. А писать анализатор строковых выражений - это
> очень сложно.

Я сию логику (того же ИНН и пр.) давно в dll вынес,


 
Кщд   (2014-03-24 19:19) [31]

>Александр_2012   (24.03.14 15:14) [25]
ОФОМС?


 
Игорь Шевченко ©   (2014-03-24 21:45) [32]

Проверки валидности данных обычно реализуются check- и referential intergity- констрейнтами и триггерами, срабатывающими на добавление/изменение записей. Эти механизмы следует изучить по документации к используемой СУБД.


 
Dennis I. Komarov ©   (2014-03-25 09:13) [33]


> Проверки валидности данных обычно реализуются check- и referential
> intergity- констрейнтами и триггерами, срабатывающими на
> добавление/изменение записей. Эти механизмы следует изучить
> по документации к используемой СУБД.

:)))


 
clickmaker ©   (2014-03-25 09:38) [34]

> check- и referential intergity- констрейнтами и триггерами

это уже последний рубеж, если юзеру удалось таки прорваться сквозь всю остальную клиент-серверную валидацию.
а referential intergity - так это вообще больше не к валидности, а к целостности данных относится


 
Игорь Шевченко ©   (2014-03-25 10:18) [35]

clickmaker ©   (25.03.14 09:38) [34]


> так это вообще больше не к валидности, а к целостности данных
> относится


Разве эти понятия чем-то существенно отличаются с точки зрения прикладной области ? На мой взгляд - совсем ничем.


 
clickmaker ©   (2014-03-25 10:26) [36]

> [35] Игорь Шевченко ©   (25.03.14 10:18)

валидность, например, еmail или телефонного номера, а также условий типа "если pole1=1, то pole2 должно быть равно только 5" - это какбэ не совсем то же самое, что ссылочная целостность


 
Труп Васи Доброго ©   (2014-03-31 10:12) [37]


> Эти механизмы следует изучить по документации к используемой
> СУБД.

Золотые слова!!! Отлить в золоте, под стекло и на стену!!!
Автору - выкинуть GUI, стукнуться хорошенько головой об стену, чтобы забыть навсегда слова вроде DBEdit и т.п. НАВСЕГДА запретить прямой доступ юзеров к таблицам, это должно быть в крови. Строить GUI надо так, как будто пользоваться им будут диверсанты, мечтающие испортить БД. Основательно познакомиться с ХП и триггерами, они помогут решить твою проблему. И ещё одно - нормальный человек может обработать мозгом за раз не более 17-20 "информационных объектов" и то это предел, а уровень комфортного восприятия заканчивается на 10 объектах, поэтому выводить на экран более 10 строк данных или более 10 характеристик какого либо объекта бессмысленно, это не воспринимается. Надо группировать различные второстепенные характеристики, убирать их с экрана и отображать только по отдельному нажатию кнопки "подробнее".


 
Dennis I. Komarov ©   (2014-03-31 11:09) [38]


> Труп Васи Доброго ©   (31.03.14 10:12) [37]

Ага, ты как первый раз тут:


> Александр_2012   (24.03.14 15:14) [25]
> Dennis I. Komarov ©
> >И кому нужна такая визуализация? Информация должна отображаться
> когда необходима, а не чтоб было...
>
> Именно необходимы все поля для визуализации. Скажем подробная
> информация об объекте.


 
clickmaker ©   (2014-03-31 11:22) [39]

> Надо группировать различные второстепенные характеристики

PageControl рулит


 
ВладОшин ©   (2014-03-31 13:34) [40]

по сабжу - добавить поле deleted
вставляем с признаком Удален, если корректно - убираем признак.


 
Dennis I. Komarov ©   (2014-03-31 14:44) [41]


> ВладОшин ©   (31.03.14 13:34) [40]
> по сабжу - добавить поле deleted
> вставляем с признаком Удален, если корректно - убираем признак.
>

Жуть, чего говоришь. Он же весь хлам и плохой и хороший в БД тянет...


 
ВладОшин ©   (2014-03-31 15:08) [42]

согласен.

Но если надо сейчас?
т.к. пересмотреть архитектуру/логику - дело не одного дня(недели/месяца).

А так делают.
Правда будешь потом везде в where  and is_deleted = "N" дописывать..

Например, в "желтой прорамме" заводишь документ, пиши что хочешь туда.
Пока он не "проведен"  - он не считается.


 
clickmaker ©   (2014-03-31 15:21) [43]

> Пока он не "проведен"  - он не считается

это скорей что-то типа where IsApproved=1 - утвержден. В говноcms sharepoint тоже такая система используется при работе с документами.


 
Dennis I. Komarov ©   (2014-03-31 16:39) [44]


> равда будешь потом везде в where  and is_deleted = "N" дописывать.
> .
>
> Например, в "желтой прорамме" заводишь документ, пиши что
> хочешь туда.
> Пока он не "проведен"  - он не считается.

Не будет. Он про SQL тоже ничего не знает. Почитай ветку...


 
Александр_2012   (2014-04-04 15:43) [45]

Уважаемые мастера. Появилась такая идея: создаю виртуальную таблицу, туда копирую текущую информацию из DBEdit-ов, проверяю на корректность, после этого сохраняю в основной таблице.
Я представил себе что-то типа:

 with DataQ do
   for i:=0 to FieldCount-1 do
     if Fields[i].DataType=ftInteger then
       VTable.AddField(Fields[i].FieldName,
                                 Fields[i].DataType,
                                 Fields[i].DataSize);
   VTable.Append;
 for i:=0 to VTable.FieldCount-1 do
   for j:=0 to MainFormKart.ComponentCount-1 do
     begin
     Temp:=MainFormKart.Components[j];
     if (Temp is TDBEdit) and (VTable.Fields[i].FieldName=(Temp as TDBEdit).Field.FieldName) then
       VTable.Fields[i].Value:=(Temp as TDBEdit).Text;
     end;
   VTable.Post;

затем получаю условие проверки и подставляю его:

   VTable.Filter:=USL.FieldByName("usl").AsString;
   VTable.Filtered:=True;
   if VTable.RecordCount>0 then //значит есть ошибка.

Кажется должно работать, но затыкается на

     if Fields[i].DataType=ftInteger then
       VTable.AddField(Fields[i].FieldName,
                                 Fields[i].DataType,
                                 Fields[i].DataSize);
пишет, что неверный размер поля (для информации все поля типа integer имеют тип number, number(5), number(10), number(15) и number(16))

В чём проблема? Я наврал в коде? А показалось, что замысел неплох. Не замусоривается основная таблица, в виртуальной всего одна запись, поэтому все проверки должны проходить быстрее, после проверок память освобождается. Возможно, это всё глупо, уж сильно не ругайте.


 
Inovet ©   (2014-04-04 16:12) [46]

> [45] Александр_2012   (04.04.14 15:43)

Раз так надо проверять по хранимым условиям, почему не хочешь сделать это в хранимой(ых) процедуре(ах)? Почитай о них.


 
Александр_2012   (2014-04-04 18:37) [47]

Проблема не только в том, что знаний не хватает (можно почитать, поспрашивать в интернете), но и в том, что фирма, создавшая БД, ограничила права пользователей, что, наверное, правильно, но затрудняет создание программ для работы с БД. Думаю, что создать ХП прав-то и не хватит. А по договору они только занимаются администрированием БД, никаких изменений, дополнений в договоре не прописано. Поэтому и пытаюсь решить проблемы как могу.


 
Styx   (2014-04-04 19:05) [48]


> ограничила права пользователей

Так Вы - пользователь или разработчик? Рассказывайте тогда подробнее всю историю.


 
turbouser ©   (2014-04-04 22:49) [49]


> Александр_2012   (04.04.14 18:37) [47]


> Думаю, что создать ХП прав-то и не хватит. А по договору
> они только занимаются администрированием БД, никаких изменений,
>  дополнений в договоре не прописано. Поэтому и пытаюсь решить
> проблемы как могу.

8-()


 
turbouser ©   (2014-04-05 14:12) [50]


> Александр_2012   (04.04.14 18:37) [47]

Мне вот интересно, много таких самоделкиных встречается, а вот зачем надо лезть в эту самую БД? Ведь если есть необходимость, то можно напрячь разработчиков. Если жадные или просто дорого для компании - то почему бы не попросить предоставить полный доступ с отказом от заключенных соглашений? А может у них есть что-то типа SDK? И ведь если все перечисленное невозможно, а сопровождение продолжается, то же это не просто так. И ведь если влезть в эту бд без необходимых технических (я уже не говорю про прикладные) навыков ,то можно все поломать..


 
sniknik ©   (2014-04-05 17:30) [51]

> Поэтому и пытаюсь решить проблемы как могу.
покажите им эту ветку... они испугаются и сами вам нужную XP сделают :), а иначе у них с администрированием/работой основной, их программы возникнут большие проблемы.


 
Александр_2012   (2014-04-06 00:06) [52]

>Styx
Подробнее. Рассказываю. БД создавала сторонняя организация, которая до сих пор поддерживает её целостность. Но программы по корректировке основной таблицы, по получению статистики пишем сами. А другие сотрудники (инженеры и операторы) пользуются написанными, в том числе и мною, программами. Так что, я и пользователь и разработчик. И программа, которую я пытаюсь улучшить, написана более года назад и прекрасно работает, за исключением оперативной (до сохранения данных на диск) проверки правильности заполнения таблицы в соответствии с внешними условиями. В программу также встроен модуль, позволяющий просканировать таблицу за определённый период времени на соответствии внешним условиям. Чем сейчас и пользуемся. Но хотелось бы предупреждать запись недостоверных данных, а не отлавливать и исправлять потом.

>turbouser ©
А ведь в БД я как раз и не лезу (не считая записи в одну из таблиц, что разрешено). И, как я написал выше, рассматриваю вариант использования виртуальной таблицы, если удастся разобраться.

>sniknik ©
Не испугаются, т.к. прав что-либо сильно накосячить у меня не хватит, ну разве что стереть все данные из таблицы, но для этого существует резервный сервер и данные восстановят, естественно, надавав мне по шее.

Вообще-то, хотелось получить ответ на вопрос в чём моя ошибка при попытке использования виртуальной таблицы, хотя и про жизнь тоже готов поговорить.


 
Inovet ©   (2014-04-06 01:11) [53]

> [52] Александр_2012   (06.04.14 00:06)
> хотелось получить ответ на вопрос в чём моя ошибка при попытке
> использования виртуальной таблицы

В самом факте её использования. Нет прав ни на что, ладно, вычисляй выражения валидации введённых данных на сервере без ХП в запросах. Что там в Оракле есть для этого? Ну, допустим, что-то такое хранится в таблице с выражениями валидации

ВалидационнаяФункция1(:ЭтоМожноСделатьПараметром, :ЕщёОдинПараметр) +
ВалидационнаяФункция2(:ДляНеёПараметр) > 10 AND
:ТутЕщёОтдельныйПараметрВоткнём NOT IN (SELECT FROM НужнаяТаблица)

Ну в таком духе что-то. Теперь это выражение подставь в запрос

SELECT ТоВыражение, ЕщёОдноИзТакихЖе, ИЕщёСколькоНадо FROM НекаяСистемнаяТалицаОраклСпециальноДляТакихДел

Потом только задавай значения параметров, выполняй и смотри результат.

Наверняка есть в Оракле и другие подобные способы.


 
Плохиш ©   (2014-04-06 01:58) [54]


> для информации все поля типа integer имеют тип number, number(5),
>  number(10), number(15) и number(16)

Number - это не Integer.


 
[ВладОшин] ©   (2014-04-06 20:25) [55]


> Александр_2012   (04.04.14 15:43) [45]
>
> Уважаемые мастера. Появилась такая идея: создаю виртуальную
> таблицу, туда копирую текущую информацию из DBEdit-ов, проверяю
> на корректность
, после этого сохраняю в основной таблице.
>

т.е. можешь написать функцию типа
if Func(dbedit1, dbedit2, .. dbeditN) then
 набор данных корректен else
 набор данных НЕ корректен
?


 
Кщд   (2014-04-08 08:39) [56]

>Александр_2012   (06.04.14 00:06) [52]
1. сделали insert в таблицу;
2. можете работать с этими данными с помощью SQL-запросов;
3. если проверка не прошла, делаете rollback, иначе - commit.
в чём проблема?


 
Dennis I. Komarov ©   (2014-04-08 10:53) [57]


> Кщд   (08.04.14 08:39) [56]
> >Александр_2012   (06.04.14 00:06) [52]
> в чём проблема?



> Александр_2012   (04.04.14 18:37) [47]
> Проблема не только в том, что знаний не хватает (можно почитать,
>  поспрашивать в интернете), но и в том, что фирма, создавшая
> БД, ограничила права пользователей, что, наверное, правильно,
>  но затрудняет создание программ для работы с БД. Думаю,
>  что создать ХП прав-то и не хватит.

т.е. на "POST" права есть, а на "INSERT"/"SELECT" нет :) Но проблема действительно не только в том что знаний не хватает, но и в нежелании их получать - проще нечто монстрообразное родить



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.62 MB
Время: 0.047 c
15-1413357927
ВладОшин
2014-10-15 11:25
2015.09.10
Думаю писать StringToТелефоны


15-1417707045
Дмитрий С
2014-12-04 18:30
2015.09.10
Получить все открытые документы Excel


15-1413985851
Ламот
2014-10-22 17:50
2015.09.10
Как корректно скопировать /dev/mtd0 в образ и обратно (NAND)?


15-1356233809
Inovet
2012-12-23 07:36
2015.09.10
(3) О чём-то ещё


15-1421133339
junglecat
2015-01-13 10:15
2015.09.10
Знатокам ноутбуков Acer





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский