|
|
|
|
| Конвертора не видел.
Придется переписать.
Кроме того тексты SQL запросов, тоже возможно придется править, если в них используются функции access (Format, nz, iif и т.п.) | |
|
| |
|
|
|
|
| Гляньте книги по T-SQL ( это MSSQLSERVER).
При переходе придется переписать не только некоторые запросы, но и желательно предусмотреть защиту от SQL Injection.
[
Пример: убрать конструкции типа
CurrentProject.Execute"Select * From Tbl1 Where Tbl1.Field1=" & me.Поле1.Value
] | |
|
| |
|
|
|
| в инетне есть вроде тулзы для Access которые позволяют искать/заменять куски причем с довольно развитой логикой поиска
Если все писать на ADO то тексты запроса все равно вероятно придется править.
и где можно глянуть различия SQL и Акса |
Когда-то давно на сайте Новикова, была утилита конвертирующая запросы в синтаксис T-SQL, но правда для MSQ 7.0. Сайт давно не доступен, утилиты у меня нет.
Запросы если в них не используются данные из полей форм и функции ACCESS конвертируются в ADP нормально. Где посмотреть список отличий не знаю. может в инете что есть...
Из того что помню в like вместо "*" нужно использовать "%"
сам никогда не переводил с MDB в adp только с нуля | |
|
| |
|
|
|
| Спасибо, братья, порадовали
чем дальше в лес - тем больше вопросов.
Вопрос: что использовать в место временных таблиц???
делал формы на основании временных данных из заполняемых кодом в таблицы (у каждого юзера получалась своя табла), по кнопке записать - перебрасывал все изменения в основные, временные данне удалял, как сей прекрасный момент - произвести в ADP, там ведь табла одна на всех, конечно можно добавить данные о пользователе но как-то сложновастенько или там другой подход. | |
|
| |
|
|
|
| на sql есть временные таблицы
#tblName - временная таблица доступная только текущему пользователю
##tblName - временная таблица доступная всем пользователям | |
|
| |
|
|
|
| С помощью хранимых процедур можно обойтись и без временных таблиц | |
|
| |
|
|
|
|
#tblName - временная таблица доступная только текущему пользователю
|
а как это сво-во устанавливается или нужно так назвать
С помощью хранимых процедур
|
а это что за зверь такой | |
|
| |
|
|
|
| имя должно начинаться с # | |
|
| |
|
|
|
| Погугли на Stored Procedure.
Хранимые процедуры, в отличие от запросов акса, могу выполнять несколько различных команд последовательно. Так же с их помощью можно делать то, что делают некоторые рекордсеты , ну и т.д.
Вот пример хранимки, использующей курсоры
ALTER PROCEDURE _Cursor
AS
BEGIN TRAN
DECLARE @IdObj int
DECLARE @IdTblDolsh int
DECLARE @IdIstInv int
DECLARE @IdDolshPlanFin int
DECLARE CurDolPlanFin CURSOR FOR
SELECT IdTblDolsh FROM TblPlanPokazateli
OPEN CurDolPlanFin
FETCH NEXT FROM CurDolPlanFin INTO @IdDolshPlanFin
WHILE @@FETCH_STATUS =0
BEGIN
IF @IdDolshPlanFin NOT IN (SELECT IdTblDolsh FROM TblDolsh)
BEGIN
DELETE FROM TblPlanPokazateli WHERE IdTblDolsh=@IdDolshPlanFin
END
FETCH NEXT FROM CurDolPlanFin INTO @IdDolshPlanFin
END
CLOSE CurDolPlanFin
DEALLOCATE CurDolPlanFin
DECLARE CurDol CURSOR FOR
SELECT IdTblDolsh,IdObj FROM TblDolsh
OPEN CurDol
FETCH NEXT FROM CurDol INTO @IdTblDolsh, @IdObj
WHILE @@FETCH_STATUS = 0
BEGIN
IF @IdTblDolsh NOT IN (SELECT IdTblDolsh FROM TblPlanPokazateli)
BEGIN
DECLARE CurIstInv CURSOR FOR
SELECT IdIstInv FROM TblKlassIstInv
OPEN CurIstInv
FETCH NEXT FROM CurIstInv INTO @IdIstInv
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO TblPlanPokazateli (IdObj,IdTblDolsh,IdIstFin,Smet,Dom,Kv,Plosh,OstSmet) VALUES (@IdObj,@IdTblDolsh,@IdIstInv,0,0,0,0,0)
FETCH NEXT FROM CurIstInv INTO @IdIstInv
END
CLOSE CurIstInv
DEALLOCATE CurIstInv
END
FETCH NEXT FROM CurDol INTO @IdTblDolsh, @IdObj
END
CLOSE CurDol
DEALLOCATE CurDol
COMMIT
RETURN
|
| |
|
| |
|
|
|
|
|
или весь код переписывать ручками?
|
сугубо ИМХО неплохой повод для рефакторинга всего приложения :) | |
|
| |