Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Tworzenie tabelki w accessie 2000
Wlodi




Typ: neutral
Postów: 5
Zarejestrowany: May 2004
Tworzenie tabelki w accessie 2000

Witam

.Oto kod Prosto z helpa accessa 2000
z HELPa:


Private Sub otworz_Click()
' Declare variables.
    Dim dbs As Database, tbl AsTableDef,fld As Field

    ' Assign the current database to the database
    ' variable.
    Set dbs = CurrentDb

    ' Create a new table and field, and assign them
    ' to the table and field variables.
    Set tbl = dbs.CreateTableDef("Stare faktury" )
    Set fld = tbl.CreateFiel("IDzamówienia",dbText)

    ' Add the field to the table, then add the table
    ' to the database.
    tbl.Fields.Append fld
    dbs.TableDefs.Append tbl
    dbs.TableDefs.Refresh


End Sub


Gdy użyłem go, przy linijce:
Set fld = tbl.CreateFiel("IDzamówienia",dbText)

Wyskakuje błąd 13 TYPE-mismatch

Gdzie jest bład?kod jest słowo w słowo z helpa?

[Post edytowany dnia 02-05-2004 20:03 przez Wlodi]

02-05-2004 20:01
Pokaż profil Wlodi  Wyślij email do Wlodi   
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003
Dwie kwestie

Kwestia pierwsza
Set fld = tbl.CreateFiel("IDzamówienia",dbText)
w tej linijce zjadłeś "d", powinna wyglądać tak:
Set fld = tbl.CreateField("IDzamówienia",dbText)

Kwestia druga
Przy tworzeniu tabel, pól nie używaj polskich znaków ani znaków przestankowych!!!
Set tbl = dbs.CreateTableDef("Stare_faktury" )
Set fld = tbl.CreateField("IDzamowienia",dbText)

Pamiętaj, że jeśli dana tabela już istnieje, lub istnieje to pole, nie możesz jej/go utworzyć ponownie!!!


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

02-05-2004 21:17
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Założyłam, że błędy w tekście przedstawionej procedury wyliczone przez Maćka powstały tylko przy wpisywaniu tekstu na forum, a w rzeczywistości treść procedury masz poprawny.
Trochę przerobiłam Twoją procedurę dla wygody przy uruchamianiu:

Private Sub otworz_Click()
Declare variables.
    Dim dbs As DAO.Database, tbl As DAO.TableDef, fld As DAO.Field
    Dim NazwaTabeli As String
    ' Assign the current database to the database variable.
    NazwaTabeli = "Stare faktury"
    Set dbs = CurrentDb
    ' Create a new table and field, and assign them
    ' to the table and field variables.

''''poniższy fragment dodałam, aby przy wielokrotnym wykonywaniu procedury
'''' uniknąć komunikatów błędów, jeśli tabela już istnieje przy kolejnym uruchamianiu
'''' i może można go usunąć ,chociaż niekoniecznie
 
Dim i As Long
    For i = 0 To dbs.TableDefs.Count - 1
      If dbs.TableDefs(i).Name = NazwaTabeli Then
            dbs.TableDefs.Delete NazwaTabeli
            Exit For
      End If
    Next
'''' koniec fragmentu

    Set tbl = dbs.CreateTableDef(NazwaTabeli)
    Set fld = tbl.CreateField("IDZamówienia", dbText)
    'Add the field to the table, then add the table to the database.
    tbl.Fields.Append fld
    'fld
    dbs.TableDefs.Append tbl
    dbs.TableDefs.Refresh
End Sub

I teraz:
1.Mam nadzieję, że pamiętałeś o tym, aby dodać referencje do Microsoft DAO 3.6 Object Library
2. Linijka:

  Dim dbs As DAO.Database, tbl As DAO.TableDef, fld As DAO.Field

może również według mnie wyglądać również tak:
  Dim dbs As Database, tbl As TableDef, fld As DAO.Field

DAO.Field  - DAO musi być albowiem jak sam zobaczysz w okienku kodu VBA, gdy po deklaracji tylko Field, po napisie fld naciśniesz kropkę, wówczas pojawiają się właściwości Field ale ADO i dlatego jest niezgodność typów.
Jak zadeklarujesz DAO.Field i naciśniesz po fld kropkę pokażą Ci się nieco inne właściwości, już 1-sza od góry jest inna. Po prostu są 2 rodzaje obiektu field i Access "podrzuca" właśnie taki bez wyraźnej deklaracji DAO.
Powyższa procedura chodzi (Microsoft Office XP)
Nazwa tabeli może dla DAO 3.6 przynajmniej zawierać spacje ( Office XP), ale trzeba potem pamiętać by w odwołaniach używać nawiasów kwadratowych.

Pozdrawiam Karolina

[Post edytowany dnia 02-05-2004 22:27 przez karolinavb]


_____________________________________________
Karolina

02-05-2004 22:27
Pokaż profil karolinavb  Wyślij email do karolinavb   
Wlodi




Typ: neutral
Postów: 5
Zarejestrowany: May 2004


DAO.Field  - DAO musi być albowiem jak sam zobaczysz w okienku kodu VBA, gdy po deklaracji tylko Field, po napisie fld naciśniesz kropkę, wówczas pojawiają się właściwości Field ale ADO i dlatego jest niezgodność typów.
Jak zadeklarujesz DAO.Field i naciśniesz po fld kropkę pokażą Ci się nieco inne właściwości, już 1-sza od góry jest inna.


Wielkie dzięki ,właśnie tu tkwił błąd.

[Post edytowany dnia 02-05-2004 22:45 przez Wlodi]

02-05-2004 22:44
Pokaż profil Wlodi  Wyślij email do Wlodi   
Wszystkich odpowiedzi: 3 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1