9 / 9 / 4
Регистрация: 11.07.2012
Сообщений: 200
|
||||||
1 | ||||||
Ликбез по DataSnap30.01.2015, 23:54. Показов 21451. Ответов 30
Метки нет Все метки)
(
Всех приветствую,
предлагаю открыть дисскусию по теме технологии DataSnap (трехзвенка от создателей delphi) интересна любая информация по данной технологии (в идеале ссылку на рабочий проект - только не такой ,как в папке sampels, что в комплекте с delphi в котором во первых черт ногу сломит, во вторых того что нужно все равно нет, а сделанный самостоятельно ) Те кто пытался самостоятельно разобраться, по книгам и учебным примерам думаю меня поймут. И так цель: есть одноранговая локальная сеть TCP/IP 1й Компьютер: (ОС Win7. Установлена Delphi XE7 Architect) Лежит база firebird (2.5/3 диалект/win1251) в ней всего одна таблица - "clients" Запущен сервер приложений datasnap - в качестве службы Windows. На форме клиентского приложения VCL. есть таблица dbgrid и кнопки под ней "Вставить" "Изменить" "Удалить" "Найти запись" также присутствует кнопка "ПОДКЛЮЧИТСЯ/ОТКЛЮЧИТСЯ" и несколько Edit-ов для внесения параметров (логин/пароль/ip адрес сервера приложений/порт/протокол) 2й Компьютер: ОС WinXP Только тонкий клиент (приложение VCL) 3й Компьютер: ОС Win7 Только тонкий клиент (приложение VCL) Собственно просто хочу, чтобы это работало. Если бы на первом же "вэбинаре" эпизод 1 или, как там у них показали бы "на пальцах популярно " такой или подобный проект, интерес вникать в эту рекламируемую технологию дальше, был бы на много выше ![]() А вот, что я выяснил за 2 недели исследований: 1. Самое главное, данный проект можно реализовать 2мя путями "по старому" - DataSnap до delphi 2010 ( клиент на основе провайдера TDSProvidrConnection) "по новому" - DataSnap delphi 2010, XE,XE2,........ (клиент на базе компонента TSqlServerMethod) меня прежде всего интересует "по новому" ибо (цитирую Осипова ниже) (но и по старому интересно) "Использование провайдеров наборов данных TDataSetProvider и TDSProviderConnection в проектах DataSnap целесообразно лишь в том случае, когда клиентское приложение должно работать на основе интерфейса IAppServer -т.е. для совместимости со старыми проектами зависимыми от COM ..................... Основное достоинство новой DataSnap — избавление от зависимости от COM, что позволило создавать более простые и производитель-ные приложения" не буду корчить из себя знатока - совершенно не представляю, что в итоге дает мне на практике эта независимость от COM но я делаю проект с нуля и хочу, чтобы он был универсальным и актуальным. Подозреваю, что будет легче "портировать" тонкий клиент на другие оси (не мелкософтные). ТЕПЕРЬ В КРАТЦЕ: по старому: сервер Firebird - ТSQLconnection - ТSQLdataset - DataSetProvaider - SQLquery (причем у ТSQLdataset интересны 2 свойства это CommandType и Commandtext) В CommandText передается инструкция SQL если в CommandType выбранно stQuery, но надо не забыть поставить флаг poAllowCommandText в опциях. клиент ТSQLconnection - DSProviderConnection - ClientDataSet1 - DataSource1 - DBGrid (есть один нюанс клиент не будет работать если на компьютере с клиентом не зарегистрирована библиотека midas.dll) Сразу вопрос, а если "по новому" - нужна эта midas.dll на клиенте? .. нет, а что нужно? по новому: сервер Firebird - ТSQLconnection - ТSQLdataset -SQLquery клиент ТSQLconnection - SqlServerMethod - - DataSetProvaider - ClientDataSet1 - DataSource1 - DBGrid (здесь все sql запросы передаются через параметры серверных методов - ниже есть пример) (отступление) в посте (ISAPI, MySQL и DataSnap XE2. от 26/08/2012 Vlad 11 Комментарии Delphi в Web ) сказано цитирую: "Теперь настроим TSQLServerMethod. Вообще, этот компонент удобно использовать в том случае, если нам необходимо получить данные только для чтения. " и "В приведенном выше примере клиента мы создали вот такую связь компонентов: ТSQLconnection - SqlServerMethod - - DataSetProvaider - ClientDataSet1 - DataSource1 - DBGrid Для чтения данных с сервера этого достаточно, для модификации — нет. Напишем теперь клиентское приложение, которое будет и читать и модифицировать данные." Далее автор реализует вариант "по старому" причем не с механизмом Commandtext, а с пресловутым dbnavigatorom, что есть не серьезно ![]() Так вот - это не правда с помощью SqlServerMethod данные прекрасно редактируются. Совсем другой вопрос, как в реальном времени обновлять данные в DBGrid не включая и не выключая постоянно ТSQLconnection. Связь (TDSProvidrConnection-DataSetProvaider) сама рулила обновлением данных (там и команда нужная имеется ApplyUpdate) достаточно было открыть/закрыть ClientDataSet1 рвать ТSQLconnection было не нужно. Я добился конечно видимости - реальной работы с данными через тонкий клиент только при помощи SqlServerMethod но что будет дальше если я захочу встроить например механизм транзакций ? Не помешает постоянное отключение/включение ТSQLconnection ? Так как я читал все подряд, то мой проект сначала получился комбинированным т.е на форме присутствовали как компоненты - провайдеры так и SqlServerMethod и удивительное дело все это вместе работало - а точнее "Вставить" "Изменить" "Удалить" работали через SqlServerMethod в то время как DBGrid обнавляли провайдеры в тчении одного подключения ТSQLconnection ЧТО Я НЕ СМОГ ПОБЕДИТЬ 1. "Найти запись" - я не смог передать sql запрос SELECT из клиента в сервер не "по старому " не "по новому" Господин Осипов к величайшему сожалению показал только пример с Insert , по которому я и реализовал Delet и Update. как правильно обновить ClientDataSet1 через метод - не понимаю "по старому " через Commandtext не так интересно но тоже пока не получается 2. Я не могу заставить работать клиент на машине где нет delphi, сервер - могу. Т.Е 1й Компьютер (клиент) ----------- 2й Компьютер (сервер) работает 1й Компьютер (клиент) ----------- 3й Компьютер (сервер) работает 1й Компьютер (сервер) ----------- 2й Компьютер (клиент) не работает 1й Компьютер (сервер) ----------- 3й Компьютер (клиент) не работает Пишет мол Error Asess Violation xxxxxx Not READ adress 00000000000000 ну то есть имеется попытка доступа к чемуто , что пока/или уже (nil) 3. Как правильно организовать процедуру самого подключения, особенно меня интереует запрос имени и пароля
мне интересен вариант - datasnap но когда я делаю свойство ТSQLconnection Loginpromt - True то выскакивает окошко, а как сделать в своей форме ? и еще один момент, реакцию на вводимые данные в edit по портам, протоколам, ip я наблюдаю но если клиент и сервер на одной машине (где делфи) то даже если данные не вводить то все равно таблица открывается, где я только не вычищал из инспектора данные по умолчанию безполезно клиент все равно их находит - этот момент меня напрягает Вот на всякий случай кому интересно, листинг сервера и клиента:
1
|
|
30.01.2015, 23:54 | |
Ответы с готовыми решениями:
30
Делегаты. Ликбез Ликбез по ООП Требуется ЛикБез ^,.,^ Qthread (ликбез) |
9 / 9 / 4
Регистрация: 11.07.2012
Сообщений: 200
|
|||||||||||
30.01.2015, 23:55 [ТС] | 2 | ||||||||||
сервер
0
|
9 / 9 / 4
Регистрация: 11.07.2012
Сообщений: 200
|
||||||||||||||||
03.02.2015, 23:12 [ТС] | 3 | |||||||||||||||
После "глубокого" анализа
![]() Все дело в том, что провайдер на стороне клиента DataSetProvider1 (через который собственно данные в итоге отображаются в DBGrid1) настроен (через инспектор) на работу с моим первым серверным методом SqlServerMethod1. А там у нас, что:
а свойство Commandtext содержит название таблицы - поэтому при подключении собственно она и отображается. Когда я делаю вставку/удаление или редактирование которые работают через SqlServerMethod2/SqlServerMethod3 и SqlServerMethod4 соответственно, то увижу я как данные изменились - только переподлключив ТSQLconnection ведь все остальные методы не связаны с провайдером DataSetProvider1 Вывод - надо, что нибудь умное написать вместо:
(для начала, потом можно и параметр из клиента подсовывать):
0
|
9 / 9 / 4
Регистрация: 11.07.2012
Сообщений: 200
|
||||||||||||||||||||||||||||||||||||
09.02.2015, 22:02 [ТС] | 4 | |||||||||||||||||||||||||||||||||||
С запросом все в порядке - разобрался. Кавычки были не те, у меня было "Денис" , а надо
кто бы мог подумать ' 'Денис' ' (хотя в другом проекте и первый синтаксис прокатывал). Вообщем сам по себе запрос SELLECT срабатывает: на сервере у компонента ClientsTable (это SQLDataset) свойство CommandType:= stQuery CommandText:= select * from CLIENT
вся таблица а только одна строчка - SELECT работает. Хорошо думаю давай сделаю так: сервер
клиент
а если переподключить ТSQLconnection то будет тот набор данных который я задавал раньше в инспекторе (CommandText:= select * from CLIENT) метод DataModule2.ClientDataSet1.ApplyUpdates(0); - тупо нечего не дает, он работает только когда есть связка компонентов: DSProviderConnection1-DataSetProvider1 соответственно клиент-сервер. ОБЪЯСНИТЕ МНЕ НЕДАЛЕКОМУ - ЕСЛИ Я ДЕЛАЮ ПРОЕКТ НЕ НА ОСНОВЕ IappServer А ИСПОЛЬЗУЯ НОВЫЕ КОМПОНЕНТЫ DELPHI 2010 И СТАРШЕ Я ГОВОРЮ О SqlServerMethod МЕТОДЫ КОТОРОГО "ЗЕРКАЛИРУЮТСЯ" С МЕТОДАМИ СЕРВЕРА И МОДИФИЦИРУЮТ ДАННЫЕ ЭТО ФАКТ Я НЕ ВЕРЮ, ЧТО НЕТ СПОСОБА ОБНОВИТЬ НА КЛИЕНТЕ ClientDataSet1 И ПРИ ЭТОМ НЕ РВАТЬ СОЕДИНЕНИЕ ПОЧЕМУ ПОСЛЕ
SqlServerMethod1 который
по всей логике 1 Передали через параметр данные ' 'Денис' ' DataModule2.SqlServerMethod5.Params.ParamByName('Qsql').Value:=s; 2 Применили метод DataModule2.SqlServerMethod5.ExecuteMethod; 3 На сервере в это время изменился CommandText у ClientsTable был (select * from CLIENT) стал ('select * from CLIENTS WHERE C_NAME = ''Денис''')
а этот метод в отличии от DataModule2.SqlServerMethod5 уже связан с провайдером DataSetProvider1 на который в свою очередь настроен наш несчастный ClientDataSet1 - DBGrid 5 как только применили - на сервере обновился ClientsTable (это SQLDataset)
все включено, все компоненты друг с другом связаны и работают . Метод тестовый "эхо" с сервера работает - значит связь есть, а вот ClientDataSet1 - ПУСТОЙ (ПУСТАЯ ТАБЛИЦА) И ВСЕ Ну ведь пишут же люди проекты на datasnap, по форумам видно, да и компонент SqlServerMethod тоже же не просто так придумали "побаловатся" ответь те кто нибудь на этот вопрос и на вопрос какие библиотеки нужны на клиенте (клиент у меня без установленной delphi не работает)
0
|
9 / 9 / 4
Регистрация: 11.07.2012
Сообщений: 200
|
|
12.02.2015, 09:27 [ТС] | 5 |
Хм, вероятно термины:
"дискуссия","диалог","обсуждение","мозговой штурм","взгляд со стороны","свежее мнение","под другим углом зрения" Можно смело заменить всего одним: "монолог" ![]()
0
|
9 / 9 / 4
Регистрация: 11.07.2012
Сообщений: 200
|
|
16.02.2015, 17:51 [ТС] | 6 |
Теперь понятно, почему все так "ТУХЛО"
Скачал переведенный на русский язык мануал: Delphi 2010 DataSnap: новые возможности в управлении и доступе к данным Боб Сворт (Bob Swart), Bob Swart Training & Consultancy (eBob42) Октябрь 2009 г. Обрадовался, блин - как же целая книга по современному datasnap (теперь узнаю "who is who") не жалкая статейка от васи пупкина, а целый труд от профессора Боба Сварта, уж он то точно "сечет" как эта "хня" работает. НА ДЕЛЕ ВСЕ ТЕ СТАТЕЙКИ ОТ ВАСЕЙ ПУПКИНЫХ ИЗ ИНЕТА - НЕ ЧТО ИНОЕ КАК ВЫБОРОЧНАЯ НАРЕЗКА ГЛАВ С ЭТОЙ КНИЖКИ нет не спорю удобно когда когда все в одном месте и даже чуть чуть чуть подробнее - но инфа та же ![]() нового с грамм Боб Сварт - сам себе противоречит: с одной стороны - новый datasnap он почему новый, он новый потому что мы уходим от COM зависимости для этого используем новые компоненты - SqlServerMethod которых раньше просто не было и не используем старые компоненты - DSProviderConnection которые раньше были а сейчас их оставили только для совметимости со старыми серверами datasnap (чтобы новый клиент можно было подключить к старому серверу) повторяю б..ь чисто для совместимости т.е если мы новый проект пишем - все не используем мы - DSProviderConnection НУ И ЧЕ Сварт делает (а за ним как теперь понятно повторяют в своих обзорах все Васи Попугайкины) когда надо данные для чтения отобразить - то это новый модный - SqlServerMethod а как дело дошло до чего то ближе к жизни то утверждение - что SqlServerMethod изменить данные не способен (не способен видимо только по тому, что Боб просто сам тупо не понял как это сделать) , а вот Осипов не утверждает что не способен когда дело дошло до правки он как Боб тут же не сливает с формы компонент SqlServerMethod заменяя его на DSProviderConnection (тем самым реализуя старый классический IappServer) он демонстрирует метод новой вставки только на основе SqlServerMethod - то что это работает это факт проверенно мной лично А самая большая беда, что у Осипова datasnap посвящен только небольшой раздел где он вскольз только один insert и проиллюстрировал и контактов ни каких у автора в интернете нет (в смысле email) - хоть в письме бы спросить можно было Вот нах...на делать уход от COM вводить SqlServerMethod - если не один полноценный рабочий проект, таким образом все равно создать нельзя - это если верить в правоту Сварта ? у этого деятеля еще один труд есть по современней Delphi / RAD Studio DataSnap XE2 Development Essentials Dr.Bob’s Delphi XE2 DataSnap Development Essentials Second XE2 Edition, April 2012for customers of Bob Swart Почитать пока не пришлось - но сдается такими темпами там тоже мало интересного...
2
|
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 5
|
|
02.05.2015, 15:45 | 7 |
отличная тема и рассуждения, разобрался с многими своими недочетами и ошибками, полезно
0
|
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227
|
|
24.07.2015, 00:27 | 8 |
Привет, kebot! Спасибо тебе за ту тему! Тоже сейчас разбираюсь с этим вопросом.
Подскажи - доделал ли ты свой проект? И реально ли в этой технологии использовать в качестве тонкого клиента веб-браузер? Как здесь? http://teran.karelia.pro/articles/item_6113.html
0
|
9 / 9 / 4
Регистрация: 11.07.2012
Сообщений: 200
|
||||||
06.08.2015, 19:47 [ТС] | 9 | |||||
Привет GringoV,
на базовом уровне у меня проект давно работает. Сейчас занят выполнением конкретно заказа (на datasnap). Эту статью я раньше тоже читал, чуть ли не единственный "нормальный" практический пример по REST. У самого в планах освоить REST причем очень бы хотелось, чтобы крутился на серваке один сервер приложений, а тонкие клиенты были разные 1 windows приложение 2 web клиент 3 android приложение 4 ios приложение вот тогда бы был "он клюзив" ![]() сейчас нет времени ковырять, REST пока хоть бы на классическом DS законченное рабочее приложение сделать но серверные методы я для манипуляциями наборами данных (запросы) не использую - слишком муторно для каждого конкретного случая создавать метод, останавливать службу, зеркалировать метод, запускать службу, прописывать параметры, обновлять список параметров и тд итп. все это заменяет простая комбинация ну к примеру
методы я тоже использую но для таких вещей, как например передача картинки в blob поле здесь на форуме у меня несколько тем было (тоже в вопросе разобрался только на половину) GringoV если сделаешь web клиент скинь пример пожалуйста, больше всего мне интересно, для этого сервер datasnap нужно с помощью мастера с нуля создавать выбирая rest, или же можно в уже рабочий "классический" проект - добавить web модуль ?
0
|
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227
|
||||||
06.08.2015, 20:07 | 10 | |||||
Я понял тебя! Спасибо за такой развёрнутый ответ. Что хотел сказать, я в процессе освоения этой технологии, но есть цель - написать пробное веб-приложение.
По поводу серверных методов - частично с тобой согласен, но мне кажется мы ещё не всё "вкурили". Я могу ошибаться, но не все запросы корректно отрабатывают с клиента. Сегодня экспериментировал с транзакциями на MySQL, так вот одна и та же хранимая процедура из mysql.exe сохранялась и отрабатывала на ура, а когда запрос слал из workbehch на создание такой же процедуры под другим именем - хрен)) ![]()
На данный момент тестирую технологию DATASNAP - отпишусь по этому вопросу. Да, также наткнулся на UNIGUI - это конечно другая песня, но потестил - вещь классная для разработки веб-приложений из под Delphi.
0
|
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227
|
|||||||||||||||||||||
28.08.2015, 02:04 | 11 | ||||||||||||||||||||
Привет Kebot! Как продвигается твой заказ на DataSnap? У меня был небольшой перерыв с этой технологией, но сейчас я снова вернулся, экспериментирую.
По твоим стопам прочитал Д. Осипова - для начала - очень ценная книга по данной технологии; Базовые вещи (вставка, удаление, редактирование) научился делать 2 способами -через методы сервера
На кнопку, в клиенте повесил следующий код...
Подскажи как делал ты? В чем я ошибся? Также попробовал менять схему получения данных, предложенную Осиповым... Пробовал через создание 2 SQLDataSet - одно множество на сервере, другое на клиенте, и присваивать... но система генерит ошибку
Подскажи, не нашёл ли ты ещё каких-то фишек, упрощающих труды программистов))) А то мне кажется схема, предложенная Осиповым слишком длинная, или я привык к SQLConnection - SimpleDataSet - DataSource - DataControl ))) Добавлено через 3 минуты Также подскажи - делал ли ты личный кабинет по данной технологии? Если да, то как решал вопрос с авторизацией? Я, насколько понял, в DataSnap есть более менее готовое решение? Или я ошибаюсь? Добавлено через 1 час 20 минут У меня ещё такой вопрос - ты когда методы новые создаешь, ты каждый раз под них на стороне клиента создаешь sqlServerMethod? Скажем у нас 30 методов - это 30 компонент создавать? ))) Или всё же динамически компонент используешь? Когда метод нужен подгружаешь в него ? Но тогда его и динамически создавать и уничтожать надо, я так понимаю. Добавлено через 43 минуты И про транзакции - есть ли они в DataSnap и нужны ли они? Ведь как таковой сервер приложений не хранит данные...
0
|
9 / 9 / 4
Регистрация: 11.07.2012
Сообщений: 200
|
|||||||||||
31.08.2015, 07:01 [ТС] | 12 | ||||||||||
И тебе привет,
Само действие выполняет метод на сервере, в случае запроса - это запрос с параметрами, например
на стороне клиента мы обращаемся к этому методу, используя компонент который в дизайнере жестко привязали к этому методу - вообщем дико не удобно стоит чуть поменять запрос - это новый метод и новый компонент (возможно 1 - попробовать программно подключать\отключать компонент к разным методам 2 - попробовать динамически создавать\ удалять компонент (как предложил ты) но это все равно не решит вопроса, как обновить данные на клиенте после изменений не рвя подключение По этим причинам я (как наверное и 99% остальных) запросы к базе делаю не через методы, а методы использую но для других задач. На стороне сервера у компонента datasetprovider должно быть включено свойство poAllowCommandtText в опциях на сервере: sqldataset (свойство commandtype - ctqwery) - sqlqwery - datasetprovider (poAllowCommandtTex - true) на клиенте clientdateset( provider name - datasetprovider сервера, remoteserver - dsproviderconnection) - datasource и все работает, у меня к базе уже наверно запросов 300 причем некоторые "трехэтажные" - собирают данные из 5-ти таблиц + вычисляемые поля + группировки, сортировки, левые /правые соединения, склейки ... как бы я все это через методы делал - даже думать не хочу.
как то это все в своем окошке со своими параметрами, дизайном и так далее - сделать Может я поступил не правильно ( не считаю себя пока настоящим программистом - максимум любитель) но я сделал так 1- нарисовал свою форму авторизации 2- в базе данных в табличке пользователей создал поля логин и пароль (занес данные) при запуске программа подключается к серверу приложений без всяких паролей но для пользователя вылазит только окошко авторизации в модальном режиме дальше дело техники если - пользователь правильно данные ввел то происходит как бы "подключение" else нажатием на кнопку "выход" он сам рвет соединение как то так, пока меня устраивает может в будущем найду подводные камни... Про транзакции - сам дуб дубом - если в двух словах ![]() P/S по web клиенту если что найдешь присылай - реально интересно
0
|
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227
|
|
31.08.2015, 13:19 | 13 |
Привет, kebot! Спасибо за такой развернутый ответ. Никак не могу сделать Select через провайдеры, вроде подключил все по книжке, выставил в DataSetProvider в Options poAllowCommandText, теперь получаю - другую ошибку - не может видите ли select выполнить на открытом множестве (на sqldataset или аналогично на sqlquery на сервере) - оно и понятно, что не может, но как его отключить перед селектом и включить после... непонятно... - запрос то идет из клиента, а в серверных методах на клиенте нет доступа к компонентам сервера... в общем я пока в думах))
Хотел у тебя спросить - ты встречал такую ошибку?
0
|
9 / 9 / 4
Регистрация: 11.07.2012
Сообщений: 200
|
|||||||||||
31.08.2015, 14:47 [ТС] | 14 | ||||||||||
На стороне сервера у компонента sqlqwery есть свойство sql
в открывшемся редакторе добавь вручную
у нас два провайдера настроены друг на друга = ТУНЕЛЬ У клиентского датасет нужно выбрать провайдер сервера тот самый который связан с квери на сервере, в этом квери (в редакторе пропиши запрос) и вот она связь ели данные нужно обновить на клиенте после изменений - то используем метод эплиапдейт
0
|
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227
|
|||||||||||
31.08.2015, 15:49 | 15 | ||||||||||
kebot, предыдущий пост подуставший писал, поэтому путанно получилось,
Смотри, пытаюсь работать через провайдеры таким образом... На сервере подключил так... Sqlconnection1 (подключаюсь к СУБД MySQL к демо БД test_db) Sqlquery1 (в свойстве SQL прописал select*from mytable where primary_key>3) DataSetProvider1 (poAllowCommandText в true) либо через SqlDataSet, тоже самое... Sqlconnection1 (подключаюсь к СУБД MySQL) SqlDataSet1 (Commandtype:=ctquery;CommandText:=select*from mytable where primary_key>3) DataSetProvider1Server (poAllowCommandText в true) Вот картинка со стороны сервера... На клиенте так... Sqlconnection1 (Driver выставил в datasnap) DSProviderConnection1(SQLconnection:=SqlConnection1;ServerClassName:=TServerMeth ods) ClientDataSet1(RemoteServer:=DSProviderConnection1; ProviderName:=DataSetProvider1Server) DataSource(DataSet:=ClientDataSet1) Выглядит так... В чем у меня проблема? На кнопку вешаю такую обработку...
То есть DataSetProvider1Server работает через SqlQuery и при попытке заменить запрос натыкается на открытое множество... Пытаюсь понять в чем ошибся, потому что ты говоришь, что у тебя всё летает. Также, заметил такую "байду"... Пытаюсь делать изменения в Dbgrid "ручками"... потом жму на кнопку, в которой прописано
[DELPHI]showmessage('Updated '+inttostr(clientdataset1.ChangeCount));[DELPHI] Заметил, что если правишь одну строку число изменений равно нулю, а если правишь 2 строки - то число изменений равно двум. Глюк?)) В реальном проекте такое врят ли понадобится, но всё же - странно что такое наблюдается. Скажи, может быть ты ещё какие то свойства прописывал у провайдеров, чтоб они сами закрывали и открывали множество? Потому что разница в наших наборах только в том, что ты на файрберде пишешь а я на мускуле, но это не должно влиять.
0
|
9 / 9 / 4
Регистрация: 11.07.2012
Сообщений: 200
|
|
31.08.2015, 18:10 [ТС] | 16 |
Попробуй запрос с клиента не ко всей базе данных сделать, а все таки к конкретной таблице
я не знаю как там на mysql но у меня запросы идут к таблицам а не к BASE.FDB в моем случае
0
|
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227
|
|||||||||||
01.09.2015, 07:22 | 17 | ||||||||||
Короче,kebot, решение нашёл - не знаю насколько оно грамотное, но, блин, работает))) Возможно, это огород, но чего-то лучшего не нашел.
Ошибка была в том, что пытался изменить запрос на открытом множестве и как-то надо было его закрыть. Ладно, думаю, сделаю это в ручную... -создал методы закрытия / открытия множества на сервере -создал переменную серверного типа на клиенте -вызвал методы с клиента для закрытия множества на сервере Итого - как сделать Select в технологии DataSnap? (Ну и не только select, а все запросы к БД - update, delete и т.д... )
P.S. По поводу того запроса Select*from test_db это просто моя ошибка, в mysql все работает по стандартам sql, то есть запросы к таблицам.
0
|
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227
|
|
01.09.2015, 07:30 | 18 |
Короче, kebot, твоя ветка по DataSnap развивается)))
0
|
16 / 16 / 1
Регистрация: 29.11.2014
Сообщений: 227
|
|
03.09.2015, 12:11 | 19 |
kebot Приветствую, я тут продолжаю экспериментировать с DataSnap, накопал аж 3 способа для Insert | Delete | Update... Чуть позже об этом напишу, ты мне вот что скажи - ранее ты писал, что у тебя было несколько компов, на которых ты экспериментировал с DataSnap, что на тех, на которых не было Delphi - ниче не работало - решил ли ты этот вопрос?
0
|
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 1
|
|
04.09.2015, 16:58 | 20 |
GringoV, Привет, сам тоже как раз ковыряю DataSnap, у меня тоже была такая проблема. Решается прописыванием на клиенте в uses модуля midaslib. После чего клиент также не требует таскания с собой midas.
0
|
04.09.2015, 16:58 | |
Помогаю со студенческими работами здесь
20
Ликбез по ТВ и apple tv DataSnap и БД Ликбез по стеку прошу ликбез по оконным приложениям Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |