9 / 9 / 4
Регистрация: 11.07.2012
Сообщений: 200
|
||||||
1 | ||||||
Ликбез по DataSnap30.01.2015, 23:54. Показов 22410. Ответов 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 | |
04.09.2015, 16:58 | |
Помогаю со студенческими работами здесь
20
Ликбез по ТВ и apple tv DataSnap и БД Ликбез по стеку прошу ликбез по оконным приложениям Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |