Bosna i Hercegovina



#1 24.02.2016-16:07
kenan Offline
Clan
Registrovan/a od: 10.02.2011-15:24
Komentari: 190


Subject: provjera dali postoji tabela u bazi
Pozdrav

htio bih da napravim provjeru da li je određena tabela kreirana odnono dali postoji i našao sam nešto na netu al nikako da mi proradi
ako neko može da mi kaže gdje griješim odnosno šta sam fulio

ovo je funkcija koja ide posebno i koja bi trebala da ocita sve tabele u bazi
Function TableExist(TableName As String) As Boolean
Dim Db As Database
Dim tbl As Recordset

On Error GoTo TableExistError

Set Db = CurrentDb
Set tbl = Db.OpenRecordset(TableName)
TableExist = True

Set tbl = Nothing

GoTo tableEnde

TableExistError:
TableExist = False
Set tbl = Nothing
GoTo tableEnde
tableEnde:
End Function

poziv u drugoj funkciji sa uslovom

If TableExists("posebni_podaci_o_placama") = True Then GoTo Kraj Else Exit Function
↑  ↓

#2 24.02.2016-18:18
dex Offline
Super Moderator
Registrovan/a od: 23.02.2012-19:59
Komentari: 605


Subject: Re: provjera dali postoji tabela u bazi
Funkcija savrseno radi, odnosno vraca vrednost true ili false u zavisnosti od toga da li tabela postoji. Pitanje je sta zelis i kako radi funkcija iz kojeje pozivas
↑  ↓

#3 24.02.2016-18:28
kenan Offline
Clan
Registrovan/a od: 10.02.2011-15:24
Komentari: 190


Subject: Re: provjera dali postoji tabela u bazi
to sam i ja testirao i radi ali kada stavim u nekoj drugoj funkciji da mi provjeri odnosno preskoči dalje tu ne odradi posao dokraja nego nastavi i onda na "zavrsi:" nastavi kao da uslov ne postoji ne kontam gdje griješim

i kad pokrene izvršenje u "zavrsi:" normalno funkcija stane jer nemože otvoriti nepostoječi recorset

evo cijela funkcija

Function UvozPP()
Dim i As Integer
Dim RS1, rs2

SQLProvjera = "SELECT [T sintetika].aop FROM [T sintetika] WHERE ((([T sintetika].godina)=" & godina & ") AND (([T sintetika].period)='" & OP & "') AND (([T sintetika].firma)=" & Firma & ") AND "
SQLProvjeraBS = "(([T sintetika].VR)='PP')) GROUP BY [T sintetika].aop;"
Set PROVJERA = CurrentDb().OpenRecordset(SQLProvjera & SQLProvjeraBS)
If PROVJERA.RecordCount = 0 Then
'Posebni podtci
Set rs = CurrentDb().OpenRecordset("T sintetika")
With rs
For lng = 901 To 915
.AddNew
!aop = lng
![Predhodna godina] = 0
!godina = godina
!period = OP
!Firma = Firma
!VR = "PP"
.Update
Next lng
End With
rs.Close
Set rs = Nothing
If fExistTable("posebni_podaci_o_placama") = True Then GoTo zavrsi Else Exit Function
Else
If fExistTable("posebni_podaci_o_placama") = True Then GoTo zavrsi Else Exit Function
End If

zavrsi:
i = 901
Do While i < 916
Set rs2 = CurrentDb().OpenRecordset("select * from posebni_podaci_o_placama where id=" & i & ";")
Set RS1 = CurrentDb().OpenRecordset("select * from [T sintetika] where firma=" & rs2!Firma & " and godina=" & rs2!godina & " and period='" & rs2!ObracinskiPeriod & "' and vr='PP' and aop=" & i & ";", dbOpenDynaset, dbSeeChanges) 'Netreba uslov ovde se samo upisuje
i = i + 1
RS1.Edit
RS1![Predhodna godina] = rs2!tekuca_godina
RS1.Update
Loop
End Function
↑  ↓

#4 24.02.2016-18:37
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,534


Subject: Re: provjera dali postoji tabela u bazi
dodaj izmedzu Loop i End Function Exit Function

DownloadIzvorni kod (Visual Basic):
  1. Loop
  2. Exit Function
  3. End Function
↑  ↓

#5 24.02.2016-18:41
kenan Offline
Clan
Registrovan/a od: 10.02.2011-15:24
Komentari: 190


Subject: Re: provjera dali postoji tabela u bazi
Posluša savjet al opet isto se dešava još koja ideja
↑  ↓

#6 24.02.2016-18:57
dex Offline
Super Moderator
Registrovan/a od: 23.02.2012-19:59
Komentari: 605


Subject: Re: provjera dali postoji tabela u bazi
kod mene ovo radi (nisam ulazio u tacnost dela zavrsi)

DownloadIzvorni kod (vb.net):
  1. If TableExist("posebni_podaci_o_placama") Then
  2. GoTo zavrsi
  3.  
  4. Else
  5. Exit Sub
  6.  
  7. End If
  8.  
  9. zavrsi:
  10. i = 901
  11. Do While i < 916
  12. Set rs2 = CurrentDb().OpenRecordset("select * from posebni_podaci_o_placama where id=" & i & ";")
  13. Set RS1 = CurrentDb().OpenRecordset("select * from [T sintetika] where firma=" & rs2!Firma & " and godina=" & rs2!godina & " and period='" & rs2!ObracinskiPeriod & "' and vr='PP' and aop=" & i & ";", dbOpenDynaset, dbSeeChanges) 'Netreba uslov ovde se samo upisuje
  14. i = i + 1
  15. RS1.Edit
  16. RS1![Predhodna godina] = rs2!tekuca_godina
  17. RS1.Update
  18. Loop
  19. End Sub
↑  ↓

#7 24.02.2016-18:58
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,534


Subject: Re: provjera dali postoji tabela u bazi
Sta je ovo
DownloadIzvorni kod (Visual Basic):
  1. If fExistTable("posebni_podaci_o_placama") = True Then GoTo zavrsi Else Exit Function
  2. Else
  3. If fExistTable("posebni_podaci_o_placama") = True Then GoTo zavrsi Else Exit Function
  4. End If

zasto ti tebaju dva isti ifovi
dane slucajno treba da bude:
DownloadIzvorni kod (Visual Basic):
  1. If fExistTable("posebni_podaci_o_placama") = True Then
  2.    GoTo zavrsi
  3. ElseIf fExistTable("posebni_podaci_o_placama") = false Then
  4.    Exit Function
  5. End If
↑  ↓

#8 24.02.2016-19:22
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,793


Subject: Re: provjera dali postoji tabela u bazi
DownloadIzvorni kod (Visual Basic):
  1. Function ImalTabele(ImeTabele As String) As Boolean
  2. '*******************************************
  3. '*Ime:ImalTable (Function)
  4. '*Sadržaj:Provjerava dali postoji tavela
  5. '*Autor:     ZXZ
  6. '*Datum:      02 24, 2016, 07:15:14
  7. '*Adresa: Tuzla BiH
  8. '*Email:     zxz@icentar.ba
  9. '*Ulazni parametri:Ime tabele
  10. '*Izlazni parametri:
  11. '*Vraa vrijednost:True ili false
  12. '*******************************************
  13.  
  14. Dim Db As DAO.Database
  15. Dim Tdf As DAO.TableDef
  16.  
  17. Set Db = CurrentDb()
  18.  
  19. For Each Tdf In Db.TableDefs
  20. If Tdf.Name = ImeTabele Then
  21. ImalTabele = True
  22. Exit For
  23. End If
  24. Next Tdf
  25.  
  26. End Function

Pozdrav
↑  ↓

#9 24.02.2016-19:23
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,793


Subject: Re: provjera dali postoji tabela u bazi
Uf nisam ni vidio da vec ima dva posta.
Pozdrav
↑  ↓

#10 24.02.2016-19:30
kenan Offline
Clan
Registrovan/a od: 10.02.2011-15:24
Komentari: 190


Subject: Re: provjera dali postoji tabela u bazi
možel se ovako pozvati

If ImalTabele("posebni_podaci_o_placama") = True Then GoTo zavrsi Else Exit Function
↑  ↓

#11 24.02.2016-19:32
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,793


Subject: Re: provjera dali postoji tabela u bazi
Za @kenan.
Tvoja procedura nije dobra iz razloga sto je rjesenje bazirano na greski i to bilo kojoj greski a greska pri podizanju recordseta je 3078 pa da je bar u TableExistError: napisan uslov ako se pojavi ta greska onda samo da da odgovor false.
Znaci da se pojavi bilo kakva greska vratit ce odgovor da nema tabele.
Inace je procedura ispravna.
Citat:
ovo je funkcija koja ide posebno i koja bi trebala da ocita sve tabele u bazi
Ova procedura nece ocitati tabele iz baze nego jednostavno pokusava podici recordset tabele pod imenom koje smo napisali pri pozivu.
Ukoliko se desi greska pri setovanju baze ado dao i tada ce javiti da nema tabele iako je ima.
Pozdrav
↑  ↓

Stranice (1): 1


All times are GMT +01:00. Current time: 18.11.2018-15:48.