Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / VFP8+MS SQL Server и автоинкрементарный ID... / 9 сообщений из 9, страница 1 из 1
05.08.2003, 16:18
    #32227722
Albert M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VFP8+MS SQL Server и автоинкрементарный ID...
Ситуация проста. Пишу клиента на Фоксе 8. Есть MS SQL Server (или MySQL). Там 2 таблицы. В одной - клиенты (уникальные) и в другой - их счета (может быть много). В первой таблице при добавлении новой записи автоматически образуется ID. Во вторую таблицу добавляются записи с этим ID. Проблема в том, чтобы при добавлении записи в первую таблицу узнать какой ID образовался. НО КАК???? Есть ли вообще такая возможность? Если можно, напишите фрагмент кода...
...
Рейтинг: 0 / 0
05.08.2003, 16:23
    #32227730
Серг70
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VFP8+MS SQL Server и автоинкрементарный ID...
В MS SQL есть такая функция SCOPE_IDENTITY( )
Возвращай это значение на клиента после вставки в первую таблицу
...
Рейтинг: 0 / 0
05.08.2003, 16:59
    #32227782
Albert M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VFP8+MS SQL Server и автоинкрементарный ID...
Спасибо! Не подскажешь как это будет выглядеть в коде?

MyCon=sqlconnect('ODBC_Driver','login','password')

=sqlexec(MyCon,'INSERT table1(a,b,c,d) VALUES (a,b,c,d)')
=sqlexec(MyCon,'SCOPE_IDENTITY()','new_id')

Так?

А если таблицы одновременно юзают 50 пользователей, то не получится ли так, что я получу ID записи введёной другим пользователем на доли секунды позже меня?
...
Рейтинг: 0 / 0
05.08.2003, 18:08
    #32227907
Серг70
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VFP8+MS SQL Server и автоинкрементарный ID...
Я использую вызов хранимых процедур SQL
Код Fox
Код: plaintext
1.
NewId= 0 
sqlexec(MyCon,'Exec MyIns ?a,?b,?c,?d, ?@NewId') 

Код SQL
Код: plaintext
1.
2.
3.
4.
5.
6.
Create Proc MyIns
@a int,@b int,@c int,@d int,@newid out
As 
Begin
INSERT table1(a,b,c,d) VALUES (@a,@b,@c,@d)
Select @newid=SCOPE_IDENTITY( ) 
End
...
Рейтинг: 0 / 0
05.08.2003, 18:13
    #32227913
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VFP8+MS SQL Server и автоинкрементарный ID...
А если таблицы одновременно юзают 50 пользователей, то не получится ли так, что я получу ID записи введёной другим пользователем на доли секунды позже меня?

Выдержка из BOL
SCOPE_IDENTITY
Returns the last IDENTITY value inserted into an IDENTITY column in the same scope. A scope is a module -- a stored procedure, trigger, function, or batch. Thus, two statements are in the same scope if they are in the same stored procedure, function, or bat


Вообщем если кратко перевести- проблем не будет
...
Рейтинг: 0 / 0
05.08.2003, 18:21
    #32227931
Albert M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VFP8+MS SQL Server и автоинкрементарный ID...
Всем большое спасибо! :)
...
Рейтинг: 0 / 0
07.08.2003, 00:33
    #32229473
Albert M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VFP8+MS SQL Server и автоинкрементарный ID...
Упс! Стал пробовать - данные добавляются, а ID не возвращается.

Сервер:

CREATE PROCEDURE [dbo].[al_proverka]
@a char(10),@b int,@newid int output
As
Begin
INSERT aa1(a2,a3) VALUES (@a,@b)
Select @newid=SCOPE_IDENTITY( )
End
GO

Фокс:

newid=0
=sqlexec(MyConn,'Exec Albert.dbo.al_proverka ?a,?b,?newid')

Возвращается 0, хотя ID образуются разные. Что не так?
...
Рейтинг: 0 / 0
07.08.2003, 10:12
    #32229666
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VFP8+MS SQL Server и автоинкрементарный ID...
OUTPUT переменная передается по ссылке
Код: plaintext
1.
2.
PRIVATE newid
newid= 0  
=sqlexec(MyConn,'Exec Albert.dbo.al_proverka ?a,?b,?@newid') 
...
Рейтинг: 0 / 0
07.08.2003, 11:09
    #32229752
Albert M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VFP8+MS SQL Server и автоинкрементарный ID...
Crip, спасибо ещё раз!!!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / VFP8+MS SQL Server и автоинкрементарный ID... / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]