powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Понятие скрипта
9 сообщений из 9, страница 1 из 1
Понятие скрипта
    #32311323
vinni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли в Access понятие шрифта
например мне скриптом надо выполнить скрипт
INSERT INTO DCLASS (DCODE,NAME,PR) VALUES (10000000,'<text>','T');
INSERT INTO DCLASS (DCODE,NAME,PR) VALUES (11000000,'<text>','T');
INSERT INTO DCLASS (DCODE,NAME,PR) VALUES (11010000,'<text>','T');
INSERT INTO DCLASS (DCODE,NAME,PR) VALUES (11010100,'<text>','T');
INSERT INTO DCLASS (DCODE,NAME,PR) VALUES (11010200,'<text>','T');
Зарание спасибо
...
Рейтинг: 0 / 0
Понятие скрипта
    #32311635
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно сохранить эту бяку в тексте запроса (например - к серверу). Но поскольку предполагается послать ее на сам Аксесс, то (мне кажется) придется делать это програмно создав минимальный набор утилиток - анализ строки SQL на вхождение
";" & <некий промежуток, сжимаемый Trim-ом в ""> & "INSERT "|"UPDATE "|"DELETE ", резки ее на части (по этому признаку) и запуск по частям в порядке порезки. Итого - усилий на часок-другой (если сажать много багов по пути) :0).
Если же предполагается послать запрос на приконекченный (ОДБСей) сервер, а строка - дамп в его же синтаксисе, то и вовсе ничего делать не надо. Ибо вся отсылаемая строка исполняется на сервере.
...
Рейтинг: 0 / 0
Понятие скрипта
    #32311668
vinni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если у меня просто разделенные файлы баз данных и в файле где храняться таблицы нужно сделать всю эту штуку
...
Рейтинг: 0 / 0
Понятие скрипта
    #32311950
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
напиши че-нть типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
Option Compare Database
Option Explicit

Public Function breakSQL(sSQL As String)
Dim sE As String, sSQLb As String
ReDim sB( 3 ) As String
    sB( 0 ) =  "DELETE" 
    sB( 1 ) =  "INSERT" 
    sB( 2 ) =  "UPDATE" 
    sB( 3 ) =  "PROCEDURE" 
Dim pos As Long, i As Long, posB As Long, pMin As Long
    pos = InStr( 1 , sSQL,  ";" ) ', vbDatabaseCompare)
    If pos > 0 Then
        pMin = 0
        sE = Mid(sSQL, pos)
        For i = 0 To UBound(sB)
            posB = InStr(1, sE, sB(i))
            If (pMin = 0) Or (pMin > posB) Then
                pMin = posB
            End If
        Next i
        'опускаем проверку синтаскической верности
        ' и всякие анализы "комментариев" в строке дампа
        ' добавим по мере необходимости
        pos = pos + posB
        sSQLb = Left(sSQL, pos)
        sSQL = Mid(sSQL, pos +  1 )
    Else
        sSQLb = sSQL
        sSQL =  ""
    End If
    breakSQL = sSQLb
End Function

Public Function assaSQL(qName As String) As Long
Dim sSQL As String, sB As String, n As Long
Dim db As Database
On Error GoTo err_assaSQL
    sSQL = CurrentDb.QueryDefs(qName).SQL
    'тут можно засандалить транзакцию - в зависимости от
    Do While True
        sB = breakSQL(sSQL)
        Set db = CurrentDb
        If Trim(sB) <> "" Then db.Execute sB
        n = n + db.RecordsAffected
        If sSQL = "" Then Exit Do
    Loop
ex_assaSQL:
    Set db = Nothing
    assaSQL = n
    MsgBox "Изменено записей " & n
    Exit Function
err_assaSQL:
    'assaSQL = False
    'если транзакцией - покумекать
    MsgBox Err.Description & "  " & sB
    Resume ex_assaSQL:
End Function

- я надумал, что мне тоже дожно сгодиться. А то фих бы стал писать. qName - имя запроса "к серверу" (они единственно не проверяют синтаксис и позволяют сохранить "символы за пределами инструкции SQL")
...
Рейтинг: 0 / 0
Понятие скрипта
    #32311965
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ReDim sB(6) As String
sB(0) = "DELETE "
sB(1) = "INSERT "
sB(2) = "UPDATE "
sB(3) = "PROCEDURE "
sB(4) = "CREATE "
sB(5) = "ALTER "
sB(6) = "DROP "
...
Рейтинг: 0 / 0
Понятие скрипта
    #32311975
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще баг:
вместо:
pos = pos + posB
надо:
pos = pos + pMin

ну и т.п. :0)
...
Рейтинг: 0 / 0
Понятие скрипта
    #32312164
vinni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как это работает, что что делать если имя одного скрипта больше 255 символов
...
Рейтинг: 0 / 0
Понятие скрипта
    #32312215
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваш скрипт поместите в _хранимый_ запрос с типом "запрос к серверу". (откройте конструктор запросов в режиме SQl, выберите тип запроса "запрос к серверу", поместите в окно ваш скрипт и сохраните под полюбившимся Вам именем с длинной имени не больше 255 символов :0). И именно это имя (под которым вы его сохраните) и будет qName при вызове ф-ии. При чем тут 255? (вот только пытаться выполнить скрипт из окна запросов не надо).


пояснилово:
сама строка Sql (скрипт) тут вызывается из сохраненного запроса выражением
sSQL = CurrentDb.QueryDefs(qName).SQL

- Вы можете переписать чтение строки SQL (скрипта) на чтение из внешнего (текстового) файла. - Будет удобнее. Как это сделать - масса примеров. Потребуется заменить строчку
sSQL = CurrentDb.QueryDefs(qName).SQL
на
sSQL = ФункцияЧтенияИзФайла(qName)
где ФункцияЧтенияИзФайла() - некая реализованная Вами процедура, возращающая содержимое файла, имя которого равно значению переменной qName.

Удачи.
...
Рейтинг: 0 / 0
Понятие скрипта
    #32312238
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДА, а если совсем уж напряги с кодом - подцепитесь ОДБС-ей к какому-нить серверу (могабыть MSDE?) скормите ему Ваш дамп (тем же запросом к серверу, только на этот раз можете его исполнить :0), а потом импортируйте таблицы в мдб с опцией "с данными". Вот только ключи и индексы... Не уверен что втянутся.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Понятие скрипта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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