Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка на существование таблицы / 12 сообщений из 12, страница 1 из 1
22.10.2007, 13:11
    #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
22.10.2007, 16:18
    #34885497
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на существование таблицы
Поищите по словам MSysObjects
...
Рейтинг: 0 / 0
22.10.2007, 16:20
    #34885502
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на существование таблицы
если для MS SQL то временные таблицы обозначаются знаком # (решетка)

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


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

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

Код: plaintext
1.
2.
    If Not IsNull(Application.DLookup("Name", "MSYSOBJECTS", "Name=" & "'" & strTableTemp & "'")) Then
        Бла-бла-бла
    End If
...
Рейтинг: 0 / 0
23.10.2007, 09:05
    #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
23.10.2007, 09:49
    #34886802
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на существование таблицы
Создаешь локально mdb, далее делаешь в локальной mdb линки на таблицы из твоего шаренного хранилища. И уже всю эту муть используешь в запросах :) Ну а про проверку уже рассказали.
...
Рейтинг: 0 / 0
23.10.2007, 10:19
    #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
23.10.2007, 12:12
    #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
25.10.2007, 12:30
    #34893911
Airiz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на существование таблицы
Это можно осуществить только с DAO?
...
Рейтинг: 0 / 0
25.10.2007, 12:51
    #34894023
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на существование таблицы
ADOX?
...
Рейтинг: 0 / 0
26.10.2007, 07:10
    #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
26.10.2007, 15:31
    #34897822
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на существование таблицы
Airiz[src vba]
Вместо strTableTemp нужно указывать полный путь к таблице?


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

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


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