Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché Новый топик    Ответить
 Добавление новой записи в таблицу  [new]
Rishat1c
Member

Откуда:
Сообщений: 13
Всем привет, меньше месяца изучаю Cache, и уже успел состряпать маленькую форму CSP.

Вообщем, хотел создать форму по которой можно будет добавлять новую запись в таблице.
Но все мои попытки безуспешны, поэтому решил обратиться сюда, помогите ребята :-)

Имеется класс Client (где хранятся Name, Object, Amount и Price)

			    <csp:OBJECT NAME="obj" CLASSNAME="Data.Client"> 
				<form name=client cspbind=obj>
				Наименование организации: <input type="text" name="Name" cspbind=Name> <br> 
				Объект: <input type="text" name="Object" cspbind=Object><br> 
				Количество: <input type="text" name="Amount" cspbind=Amount ><br> 
				Цена:  <input type="text" name="Price" cspbind=Price><br>
				<input name="New" type="Button" value="Добавить" onClick='client_new();'> 
				</form>


<script language=SQL name="client">
SELECT ID,Name,Object,Amount,Price
FROM Data.Client
</script>


При нажатии кнопки добавить, почему в таблице ничего не происходит :-(
очень надеюсь на понимание и на Вашу помощь :-)
1 июн 17, 14:09    [20531336]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи в таблицу  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12871
Rishat1c, уже не помню адрес примеров нативных функций для работы с объектами в csp...

Вот нашел одну из старинных страниц на эту тему.

<html>
<title>Контактное лицо у абонента</title>
<head>
<link rel="stylesheet" type="text/css" href="/css/standart.css">
<script language="javascript">
// Добавить контакт для абонента
function AddCont(IdA) {
  var id=#server(..cAddCont(IdA))#
  window.navigate("telabcont.csp?ida="+IdA+"&id="+id)
}
// Удалить контактное лицо
function DelCont(Id,IdA) {
  #server(..cDelCont(Id))#
  window.navigate("telabedit.csp?id="+IdA)
}
</script>

<csp:method name='cDelCont' arguments='Id:%String'>
  n o
  s o=##class(Tel.AbContact).%OpenId(Id)
  d ##class(Tel.AbContact).%Delete(o.%Oid())
  d o.%Close()
  q
</csp:method>
<csp:method name='cAddCont' arguments='Id:%String' returntype='%String'>
  n oab,o,id
  s oab=##class(Tel.Abonent).%OpenId(Id)
  s o=##class(Tel.AbContact).%New()
  s o.Abonent=oab
  d o.%Save()
  s id=o.%Id()
  d oab.%Close()
  d o.%Close()
  q id
</csp:method>
</head>
<body>

<csp:object name='abcont' classname='Tel.AbContact' objid='#(%request.Data("id",1))#'>

<form name='fabcont' cspbind='abcont'>
<table width='100%' border='0'>
<tr>
<th align='left' valign='top' width='90%'>Контактное лицо абонента
<th align='left' valign='top' rowspan='2'>
  <table>
  <tr>
  <td><input type='button' value='Выход' onclick='window.navigate("telabedit.csp?id=#(%request.Data("ida",1))#")'>
  <tr>
  <td><input type='button' value='Записать' onclick='fabcont_save()'>
  <tr>
  <td><input type='button' value='Добавить' onclick='AddCont(#(%request.Data("ida",1))#)'>
  <tr>
  <td><input type='button' value='Удалить' onclick='DelCont(#(%request.Data("id",1)_","_%request.Data("ida",1))#)'>
  </table>
<tr>
<td valign='top'>
  <table border='0'>
  <tr>
  <td>Имя
  <td><input type='text' name='tname' cspbind='Name' size='50'>
  <tr>
  <td>Должность
  <td><input type='text' name='tpost' cspbind='Post'>
  </table>
</table>
</form>
</body>
</html>
1 июн 17, 14:48    [20531562]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи в таблицу  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12871
Rishat1c
			    <csp:OBJECT NAME="obj" CLASSNAME="Data.Client"> 


У тебя нет привязки к ИДишнику экземпляра...

Да и вообще в твоем примере есть большое количество атрибутов объявленных без всяких кавычек, а это плохо.
1 июн 17, 14:50    [20531572]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи в таблицу  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12871
krvsa
уже не помню адрес примеров нативных функций для работы с объектами в csp...

И в документации кроме записи ничего не показали.
http://docs.intersystems.com/cache20162/csp/docbook/DocBook.UI.Page.cls?KEY=GCSP_dbapps

Нативное добавление не учитывает связи с родительскими элементами. Т.ч. пользоваться им можно только в частном случае.
1 июн 17, 15:02    [20531616]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи в таблицу  [new]
Rishat1c
Member

Откуда:
Сообщений: 13
 <csp:method name='cAddCont' arguments='Id:%String' returntype='%String'>
  n oab,o,id
  s oab=##class(Tel.Abonent).%OpenId(Id)
  s o=##class(Tel.AbContact).%New()
  s o.Abonent=oab
  d o.%Save()
  s id=o.%Id()
  d oab.%Close()
  d o.%Close()
  q id
</csp:method>


Не очень понятен этот метод. Переплетаются две таблицы ( Сложно для меня это ещё

Вот такую конструкцию состряпал, с использованием ангуляра
<
csp:object name='abcont' classname='Data.Client' objid='#(%request.Data("id",1))#'>
				<form name='fabcont' cspbind='abcont'>
  				<input type='button' value='Записать' onclick='fabcont_save()'>
  				<input type='button' value='Добавить' onclick='AddCont(#(%request.Data("ida",1))#)'>	
				<br>
				
				<table class="table table-bordered">
    				<tr><th>Имя</th><th>Объект</th><th>Количество</th><th>Цена</th><th>Удалить</th></tr>
    				<tr ng-repeat="client in clients">
    					<td>{{client.Name}}</td>
    					<td>{{client.Object}}</td>
    					<td>{{client.Amount}}</td>
    					<td>{{client.Price}}</td>
    					<td><center><input type="button" class="btn btn-danger" value="X" ng-click="delete(client);"/></center></td>
    				</tr>
    			</table>
    			</form>


Все равно не хочет работать
1 июн 17, 17:33    [20532434]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи в таблицу  [new]
Rishat1c
Member

Откуда:
Сообщений: 13
Мне нужно сделать просто,имеется 4 инпата, и по нажатию добавлялся новая строчка в таблице с данными с этих инпатов
1 июн 17, 21:15    [20533052]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи в таблицу  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12871
Rishat1c
Не очень понятен этот метод. Переплетаются две таблицы

Там добавляется связь с материнской таблицей. У тебя такого нет.
2 июн 17, 08:35    [20533548]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи в таблицу  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12871
Rishat1c
Вот такую конструкцию состряпал, с использованием ангуляра

Если хочешь использовать Ангуляр - тебе привязка вообще не нужна.
Пусть сервер делает все кащейские дела, а на клиента просто передает жосн-данные. Ангуляр их покажет, заредактирует и отправит обратно.
2 июн 17, 08:38    [20533550]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи в таблицу  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12871
Rishat1c
Мне нужно сделать просто,имеется 4 инпата, и по нажатию добавлялся новая строчка в таблице с данными с этих инпатов

Мой пример без таблицы... Там только форма.
Но если делать все с перерисовкой всей страницы, добавить на страницу еще и табличку - не проблема.

С таблицами другая проблема... Они могут содержать много записей. Тогда "простого" показа будет не достаточно.
2 июн 17, 08:41    [20533553]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи в таблицу  [new]
Rishat1c
Member

Откуда:
Сообщений: 13
У меня все нормально отображается)
Просто вывод через JSON с ангуляром у меня работает довольно таки плачевно, т.к. КИРИ́ЛЛИЦУ не поддерживает :-(
Поэтому через ангуляр реализовал только Вывод данных в таблицу и удаление записей.

Осталось только реализовать добавление, поэтому и обратился сюда)
Как я понял, твой пример работает только с переходом на новую страницу и там уже привязка идет к IDшнику, где по нему можно изменять и удалять данные :-(

Хотел бы просто на текущей странице где находиться таблицу сделать добавление :-)
Поэтому и обратился сюда, думал может у кого нибудь есть пример) Заранее спасибо)
4 июн 17, 12:53    [20537871]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи в таблицу  [new]
Rishat1c
Member

Откуда:
Сообщений: 13


К сообщению приложен файл. Размер - 14Kb
4 июн 17, 14:50    [20537959]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой записи в таблицу  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12871
Rishat1c
Просто вывод через JSON с ангуляром у меня работает довольно таки плачевно, т.к. КИРИ́ЛЛИЦУ не поддерживает :-(
Поэтому через ангуляр реализовал только Вывод данных в таблицу и удаление записей.

Мы работаем в DOS кодировке с русскими буквами, но не имеем проблем с передачей данных. Наверняка у тебя просто кодировки не совпадают...
Rishat1c
Как я понял, твой пример работает только с переходом на новую страницу и там уже привязка идет к IDшнику, где по нему можно изменять и удалять данные :-(

Так ты первый начал!
Я тебе показал старинный пример с привязкой объекта к форме, т.к. ты про такой и спрашивал...
Rishat1c
Хотел бы просто на текущей странице где находиться таблицу сделать добавление :-)

Так отправь ajax-запрос на сервер с данными нового экземпляра, а на сервере почитаешь данные и создашь новый экземпляр...
5 июн 17, 08:19    [20538934]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché Ответить