|
|
|
|
#1 |
|
Участник
|
Цитата:
Сообщение от uchenik
Есть прога, использующая SQL базу, необходимо в аксапте сформировать документ и поместить его в одну из таблиц базы, используемой данной прогой.
Документ состоит из заголовка и строк, хранящихся в разных таблицах. Соответственно нужно при добавлении заголовка получить обратно какой-нибудь идентификатор (к слову сам идентификатор генерится в той базе автоматически), для правильного добавления строк. Вставка записи - это команда INSERT. И вот что может вернуть подобная команда как результат своей работы? Ну, максимум, количество вставленных записей. Идентификатор записи - не есть некая структурная характеристика базы данных. Т.е. что именно является идентификатором - это, скорее, логическая характеристика. Нет каких-либо однозначных критериев, по которым можно было бы сказать, что вот это есть идентификатор. Ну, предположим, что идентификатор - это то, по чему построен Primary Index. Однако, как минимум, это может быть несколько полей! И какое из них предлагаете возвращать? Так что, Ваше предположение о поиске записи после ее вставки по значению альтернативных ключей, в общем случае, единственно верное. Нет, конечно, есть еще варианты, если ключевое поле - это поле со свойством Identity. Но это уже частный случай. |
|
|
|
|
#2 |
|
MCITP
|
Цитата:
![]() А как же PHP код:
__________________
Zhirenkov Vitaly |
|
|
|
|
#3 |
|
Участник
|
Последний раз редактировалось S.Kuskov; 29.06.2011 в 12:51. |
|
|
|
|
#4 |
|
Участник
|
Если у Вас MS SQL Server, то вот пример:
1) Создайте на MS SQL таблицу, в которой одно поле текстовое, второе поле со свойством identity. 2) Создайте на MS SQL хранимую процедуру с названием "spTestReturnRecordset", в теле которой напишите что-то наподобие X++: INSERT INTO MyTable (MyFieldName) Values ('Дядя Петя') SELECT @@identity В результате работы этого джоба в инфологе Аксапты будет отображен идентификатор добавленой записи. X++: static void DD_StoredProcReturnRecordsetTest(Args _args) { str serverName = "Server"; str baseName = "Database"; str userId = "UserId"; str userPassword = "Password"; CCADOConnection cn; COM comCN; COM cmd; CCADORecordset rs; int i; ; cn = new CCADOConnection(); cn.open( "Provider=SQLOLEDB;"+ "Data Source=" + serverName + ";" + "Initial Catalog=" + baseName + ";" + "uid=" + userId + ";" + "pwd=" + userPassword); comCN = cn.connection(); cmd = new COM("ADODB.Command"); cmd.activeConnection(comCN); cmd.commandType(4); //adCmdStoredProc, see ObjectBrowser in VBA cmd.CommandText("spTestReturnRecordset"); rs = new CCADORecordset(cmd.Execute()); while (!rs.eof()) { info(strfmt("%1", rs.fields().itemIdx(0).value())); rs.movenext(); } cn.close(); }
Последний раз редактировалось Ace of Database; 29.06.2011 в 14:09. |
|
|
| Теги |
| ado, insert, odbc, ключ |
|
|
|