powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка на существование таблицы
12 сообщений из 12, страница 1 из 1
Проверка на существование таблицы
    #34884614
Airiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Пишу в коде:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Set con = New ADODB.Connection
With con
 .Provider = "Microsoft.Jet.OLEDB.4.0"
 .Open "my.mdb"
End With
sqlTemp = "CREATE TABLE temp2 (part_number Char(50))"
con.Execute sqlTemp

Такой код выполняется. Пробовала "CREATE temporary TABLE temp2 (part_number Char(50))", "temporary" не проходит. Почему то.
Подскажите, как можно создать времнную таблицу (если такое возможно)? А если нет, то как можно проверить существование таблицы?
...
Рейтинг: 0 / 0
Проверка на существование таблицы
    #34885497
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поищите по словам MSysObjects
...
Рейтинг: 0 / 0
Проверка на существование таблицы
    #34885502
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если для MS SQL то временные таблицы обозначаются знаком # (решетка)

Код: plaintext
CREATE TABLE #temp2 (part_number Char( 50 ))


Если это что-то другое, смотрите спецификацю данного диалекта языка

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Проверка на существование таблицы
    #34885908
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор... то как можно проверить существование таблицы?

Код: plaintext
1.
2.
    If Not IsNull(Application.DLookup("Name", "MSYSOBJECTS", "Name=" & "'" & strTableTemp & "'")) Then
        Бла-бла-бла
    End If
...
Рейтинг: 0 / 0
Проверка на существование таблицы
    #34886717
Airiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
If Not IsNull(Application.DLookup("Name", "MSYSOBJECTS", "Name=" & "'" & strTableTemp & "'")) Then
        Бла-бла-бла
    End If

Вместо strTableTemp нужно указывать полный путь к таблице?


База сделана на Access и использование "#" не проходит.
На одном форуме написано что можно использовать Recordset и таким образом создавать на клиентской стороне временную таблицу. Но возникает другой вопрос. Созданную временную таблицу нужно соединить с другой таблицей запросом с помощью LEFT JOIN. Т.е. Как в обычный "SELECT.." запихнуть таблицу, созданную при помощи REcordset??
...
Рейтинг: 0 / 0
Проверка на существование таблицы
    #34886802
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создаешь локально mdb, далее делаешь в локальной mdb линки на таблицы из твоего шаренного хранилища. И уже всю эту муть используешь в запросах :) Ну а про проверку уже рассказали.
...
Рейтинг: 0 / 0
Проверка на существование таблицы
    #34886870
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserСоздаешь локально mdb+1
Код: 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.
Sub Create_tmp_mdb()
    On Error GoTo Err_1
    
    Dim db As DAO.Database   ' (объект) MicroSoft DAO 3.51 Object Library
    Dim tb As DAO.TableDef
    Dim FD As DAO.Field
    
    If TableExist("ТаблицаВременная") = True Then
        DoCmd.DeleteObject acTable, "ТаблицаВременная"
    End If
    
    Dim fl As FileSystemObject  ' (объект) MicroSoft Scripting Runtime
    Set fl = New FileSystemObject

    Dim tmp_mdb As String:  tmp_mdb = Environ("Temp") & "\tmp1"
    
    If fl.FileExists(tmp_mdb & ".mdb") Then
       fl.DeleteFile tmp_mdb & ".mdb", True
    End If
    
    Set fl = Nothing
    
    Set db = DBEngine.CreateDatabase(tmp_mdb, dbLangCyrillic)

    Set tb = db.CreateTableDef("ТаблицаВременная")
    Set FD = tb.CreateField("pole1", dbText,  10 ):       tb.Fields.Append FD
    Set FD = tb.CreateField("pole2", dbDouble,  16 ):     tb.Fields.Append FD
    db.TableDefs.Append tb
    db.Close
    
    Set tb = Nothing
    Set FD = Nothing
    Set db = Nothing

    DoCmd.TransferDatabase acLink, "Microsoft Access", tmp_mdb & ".mdb", acTable, "ТаблицаВременная", "ТаблицаВременная"
    
    Exit Sub
    
Err_1:
    MsgBox Err.Description
    Set fl = Nothing
    Set db = Nothing
End Sub
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Function TableExist(ByVal TableName As String) As Boolean
    Dim i
    TableName = LCase(TableName)
    For i =  0  To Application.CurrentData.AllTables.Count -  1 
        If LCase(Application.CurrentData.AllTables.Item(i).Name) = TableName Then
            TableExist = True
            Exit For
        End If
    Next i
End Function
...
Рейтинг: 0 / 0
Проверка на существование таблицы
    #34887305
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
виноват, это был код для ACCESS-а,
вот для VB6
Код: 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.
Public Sub Create_tmp_mdb()
    On Error GoTo Err_1
    
    Dim db As DAO.Database      ' (объект) MicroSoft DAO 3.51 Object Library
    Dim tb As DAO.TableDef
    Dim FD As DAO.Field
    
    Dim fl As FileSystemObject  ' (объект) MicroSoft Scripting Runtime
    Set fl = New FileSystemObject

    Dim tmp_mdb As String:  tmp_mdb = Environ("Temp") & "\tmp1"
    
    If fl.FileExists(tmp_mdb & ".mdb") Then
       fl.DeleteFile tmp_mdb & ".mdb", True
    End If
    Set fl = Nothing
    
    Dim table_tmp As String:    table_tmp = "ТаблицаВременная"
    
    Set db = CurrentDb()
    On Error Resume Next
    db.TableDefs.Delete table_tmp
    db.Close:    Set db = Nothing
    
    On Error GoTo Err_1
    
    Set db = DBEngine.CreateDatabase(tmp_mdb, dbLangCyrillic)

    Set tb = db.CreateTableDef(table_tmp)
    Set FD = tb.CreateField("pole1", dbText,  10 ):       tb.Fields.Append FD
    Set FD = tb.CreateField("pole2", dbDouble,  16 ):     tb.Fields.Append FD
    db.TableDefs.Append tb
    db.Close
    
    Set tb = Nothing
    Set FD = Nothing
    Set db = Nothing

'    DoCmd.TransferDatabase acLink, "Microsoft Access", tmp_mdb & ".mdb", acTable, "ТаблицаВременная", "ТаблицаВременная"
    
    Set db = CurrentDb
    Set tb = db.CreateTableDef(table_tmp)
    tb.Connect = ";DATABASE=" & tmp_mdb
    tb.SourceTableName = table_tmp
    db.TableDefs.Append tb
    db.Close
    Set tb = Nothing
    Set db = Nothing
    
    Exit Sub
    
Err_1:
    MsgBox Err.Description
    Set fl = Nothing
    Set db = Nothing
End Sub
...
Рейтинг: 0 / 0
Проверка на существование таблицы
    #34893911
Airiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это можно осуществить только с DAO?
...
Рейтинг: 0 / 0
Проверка на существование таблицы
    #34894023
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADOX?
...
Рейтинг: 0 / 0
Проверка на существование таблицы
    #34896192
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub Command1_Click()
    Dim mdb As String:  mdb = Environ("Temp") & "\tmp1.mdb"
    Dim fl As FileSystemObject      ' (объект) MicroSoft Scripting Runtime
    Set fl = New FileSystemObject
    If Not fl.FileExists(mdb) Then
        Dim DB As ADOX.Catalog      ' (объект) Microsoft ADO Ext. 2.7 for DDL and Security
        Dim TB As ADOX.Table
        Set DB = New ADOX.Catalog:  DB.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & mdb & ";"
        Set TB = New ADOX.Table
        TB.Name = "Таблица1"
        TB.Columns.Append "pole1", adVarWChar,  15 
        TB.Columns.Append "pole2", adWChar,  10 
        DB.Tables.Append TB
        Set TB = Nothing
        Set DB = Nothing
    End If
End Sub
...
Рейтинг: 0 / 0
Проверка на существование таблицы
    #34897822
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Airiz[src vba]
Вместо strTableTemp нужно указывать полный путь к таблице?


Методом тыка можно выяснить за пару минут.

Успехов
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка на существование таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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