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

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


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