[VBA] Dynamiczne tworzenie tablic w bazie MSAccess
Paweł Gorczyński - 17-11-2005 11:22
[VBA] Dynamiczne tworzenie tablic w bazie MSAccess
Witam, ruski miesiąc się z tym męczę i jestem tak zapętlony, że bez pomocy nie dam rady. Uzywam VBA w Excellu. Tworzę dynamicznie tablice w bazie MSAccess, ale nie mam go zainstalowanego, a wygląda to tak:
strNazwaTablicy = "t_" & txtNrEw.Text Set tbdNowaTablica = dbGrafiki.CreateTableDef(strNazwaTablicy) With tbdNowaTablica tbdNowaTablica.Fields.Append .CreateField("Data", dbDate) tbdNowaTablica.Fields.Append .CreateField("Grafik", dbText) End With dbGrafiki.TableDefs.Append tbdNowaTablica
jest poważna wada takiej tablicy: brak klucza podstawowego. Nie potrafię go ustawić, a chciałbym, żeby kolumna "Data" była tym kluczem (data nie może się powtórzyć)
Błagam o pomoc i pozdrawiam
-- Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.vbasic
Shalom - 17-11-2005 11:22
A nie prosciej zrobic to z drugiej strony, czyli z poziomu akcesa? Ja uwazam, ze prosciej.
Pozdrawiam.
Pawel Gorczynski - 17-11-2005 11:22
pewnie, ze prosciej. Ale to przeciez fragment pewnego programu. Wraz z dodaniem np. Pracownika, tworze dla niego odzzielna tablice. Pracowników moze byc kilkudziesieciu, ale nie wiem ilu. Uzytkownik dodaje sobie goscia i nie musi nawet wiedziec, ze powstala nowa tablica w bazie.
-- Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.vbasic
Pawel Gorczynski - 17-11-2005 11:22
Dodam jeszcze ze program dziala, ale zycie jest jak pudelko czekoladek. Chcialem obsluzyc blad 3022, a wiec powtórka wartosci klucza; jesli, powiedzmy, nie uzyskam pomocy to obsluze to if recordcount >0 then, ale nie bede dalej wiedzial jak ustawiac klucz podstawowy :-(
-- Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.vbasic
Marcin Miga - 17-11-2005 11:22
Paweł Gorczyński wrote:
> Witam, > ruski miesiąc się z tym męczę i jestem tak zapętlony, że bez pomocy > nie dam rady. Uzywam VBA w Excellu. Tworzę dynamicznie tablice w > bazie MSAccess, ale nie mam go zainstalowanego, a wygląda to tak:
A czemu nie robisz tego za pomocą SQL-a? Bez grzebania się w TableDef, FieldDef, Index... Np: "CREATE TABLE aa(Pole1 Date Not Null PRIMARY KEY, ...)"
> > strNazwaTablicy = "t_" & txtNrEw.Text
Dim idfIndex As DAO.Index
Set tbdNowaTablica = dbGrafiki.CreateTableDef(strNazwaTablicy) With tbdNowaTablica .Fields.Append .CreateField("Data", dbDate) ' powyzej i ponizej wycialem tbdNowaTablica .Fields.Append .CreateField("Grafik", dbText)
' dodanie indeksu Set idfIndex = .CreateIndex("PrimaryKey") idfIndex.Primary = True ' Klucz glowny idfIndex.Fields.Append .CreateField("Data", dbDate) .Indexes.Append idfIndex End With > dbGrafiki.TableDefs.Append tbdNowaTablica > > jest poważna wada takiej tablicy: brak klucza podstawowego. Nie > potrafię go ustawić, a chciałbym, żeby kolumna "Data" była tym > kluczem (data nie może się powtórzyć) >
Teraz juz sie da...
> Błagam o pomoc i pozdrawiam
Nie błagaj, poproś.
pozdrawiaMM -- Marcin M. Miga "More matter with less art"
Paweł Gorczyński - 17-11-2005 11:22
oczywiście należało wyciapać tbdNowaTablica przy użyciu With (moje przeoczenie); o SQL myślałem i teraz, gdy w zasadzie podałeć mi to na tacy, przemyślę to jeszcze raz
jeśli chodzi o grzebanie w tabledef, to muszę ci powiedzieć, że byłem bardzo blisko rozwiązania. Próbowałem dodać index, ale w moim kodzie nie było idfIndex.Primary = True bez Ciebie nie dałbym rady, wielkie dzięki :-)
----- Original Message ----- From: "Marcin Miga" <Marcin.Miga[@]gmail.com> To: <pl-comp-lang-vbasic@newsgate.pl> Sent: Thursday, November 17, 2005 11:02 AM Subject: Re: [VBA] Dynamiczne tworzenie tablic w bazie MSAccess
Paweł Gorczyński wrote:
> Witam, > ruski miesiąc się z tym męczę i jestem tak zapętlony, że bez pomocy > nie dam rady. Uzywam VBA w Excellu. Tworzę dynamicznie tablice w > bazie MSAccess, ale nie mam go zainstalowanego, a wygląda to tak:
A czemu nie robisz tego za pomocą SQL-a? Bez grzebania się w TableDef, FieldDef, Index... Np: "CREATE TABLE aa(Pole1 Date Not Null PRIMARY KEY, ...)"
> > strNazwaTablicy = "t_" & txtNrEw.Text
Dim idfIndex As DAO.Index
Set tbdNowaTablica = dbGrafiki.CreateTableDef(strNazwaTablicy) With tbdNowaTablica .Fields.Append .CreateField("Data", dbDate) ' powyzej i ponizej wycialem tbdNowaTablica .Fields.Append .CreateField("Grafik", dbText)
' dodanie indeksu Set idfIndex = .CreateIndex("PrimaryKey") idfIndex.Primary = True ' Klucz glowny idfIndex.Fields.Append .CreateField("Data", dbDate) .Indexes.Append idfIndex End With > dbGrafiki.TableDefs.Append tbdNowaTablica > > jest poważna wada takiej tablicy: brak klucza podstawowego. Nie > potrafię go ustawić, a chciałbym, żeby kolumna "Data" była tym > kluczem (data nie może się powtórzyć) >
Teraz juz sie da...
> Błagam o pomoc i pozdrawiam
Nie błagaj, poproś.
pozdrawiaMM -- Marcin M. Miga "More matter with less art"
-- Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.vbasic
Grzegorz Danowski - 17-11-2005 19:48
Uzytkownik "Pawel Gorczynski" <p.gorczynski@zeo.pl> napisal w wiadomosci news:009d01c5eb58$080ff4c0$590510ac@K289... > pewnie, ze prosciej. Ale to przeciez fragment pewnego programu. Wraz z > dodaniem np. Pracownika, tworze dla niego odzzielna tablice. Pracowników > moze byc kilkudziesieciu, ale nie wiem ilu. Uzytkownik dodaje sobie goscia > i > nie musi nawet wiedziec, ze powstala nowa tablica w bazie.
Moim zdaniem dodawanie osobnej tabeli dla kazdego pracownika do bardzo zle podejscie projektowe. Duzo lepiej jest trzymac dane wszystkich pracowników w jednej tabeli z dodatkowa kolumna z id pracownika.
Pozdrawiam Grzegorz
Pawel Gorczynski - 18-11-2005 12:02
----- Original Message ----- From: "Grzegorz Danowski" <gdn__na@serwerze__poczta.onet.pl> To: <pl-comp-lang-vbasic@newsgate.pl> Sent: Thursday, November 17, 2005 4:51 PM Subject: Re: [VBA] Dynamiczne tworzenie tablic w bazie MSAccess
Uzytkownik "Pawel Gorczynski" <p.gorczynski@zeo.pl> napisal w wiadomosci news:009d01c5eb58$080ff4c0$590510ac@K289... > pewnie, ze prosciej. Ale to przeciez fragment pewnego programu. Wraz z > dodaniem np. Pracownika, tworze dla niego odzzielna tablice. Pracowników > moze byc kilkudziesieciu, ale nie wiem ilu. Uzytkownik dodaje sobie goscia > i > nie musi nawet wiedziec, ze powstala nowa tablica w bazie.
Moim zdaniem dodawanie osobnej tabeli dla kazdego pracownika do bardzo zle podejscie projektowe. Duzo lepiej jest trzymac dane wszystkich pracowników w jednej tabeli z dodatkowa kolumna z id pracownika.
I tak jest, dane wszystkich pracowników sa trzymane w jednej tabeli, w drugiej grafiki wzorcowe i wymagana obsada. Ale ludzie biora urlopy w róznym czasie, choruja, sa w ciagu i nie przychodza do pracy, czy grzebia swoich bliskich. Moga pracowac na róznych stanowiskach w róznych brygadach itd. Wszystko znakowane data. Stwierdzilem, ze wygodniej bedzie stworzyc im dla tych potrzeb indywidualne tablice. Dla ok 80 gosci i danych z jednego roku waga bazy to troche ponad 1Mb.
Pozdrawiam Grzegorz
-- Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.vbasic
Shalom - 18-11-2005 12:02
A jak wpadles na pomysl, zeby aplikacja typowo bazodanowa napisana byla w XL zamiast w AC?
Pawel Gorczynski - 19-11-2005 23:25
bo nie mam accessa a mam excella ----- Original Message ----- From: "Shalom" <ala@ola.pl> To: <pl-comp-lang-vbasic@newsgate.pl> Sent: Friday, November 18, 2005 11:31 AM Subject: Re: [VBA] Dynamiczne tworzenie tablic w bazie MSAccess
> A jak wpadles na pomysl, zeby aplikacja typowo bazodanowa napisana byla w > XL zamiast w AC? > > -- Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.vbasic
Shalom - 19-11-2005 23:25
No tak. Maluch to tez TIR;)
Pawel Gorczynski - 19-11-2005 23:25
> > No tak. Maluch to tez TIR;) > Czego Ty chcesz? Dane trzymam w bazie, pobieram je do Excella, obramiam, jak mi tam potrzeba i wio z powrotem do bazy
-- Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.vbasic
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
Tworzenie tabeli z =?ISO-8859-2?Q?nazw=B1_ustalan=B1_przez_?==?ISO-8859-2?Q?usera?=
=?ISO-8859-2?Q?b=B3=B1d_w_bazie=2C_nie_wiem_od_czego?==?ISO-8859-2?Q?_zaczac_szukanie?=
[Oracle] Co do tworzenia aplikacji dla bazy Oracle
=?ISO-8859-2?Q?Tworzenie_zmiennych_w_bloku_przechwytywan?==?I SO-8859-2?Q?ia_wyj=B1tk=F3w_-_try?=
[MySQL] Problem z zapisem danych w bazie danych
[oracle] [xml] XML na bazie istniejacej struktury ?
[oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?=
Problem z funkcja mysql_real_escape_string() na bazie mysql
=?ISO-8859-2?Q?=5BOracle=5D_Porownanie_wierszy_z_tych_?==?ISO-8859-2?Q?samych_tablic_na_2_r=F3=BFnych_schematach?=
zanotowane.pldoc.pisz.plpdf.pisz.pltejsza.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|