/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Udtræk af tabel, hvis den findes...
Fra : Ukendt


Dato : 02-11-08 13:31

Hejsa.

Jeg vil gerne lave et udtræk fra en tabel, men kun hvis tabellen findes.

Jeg bruger følgende kode pt. (uddrag):

strsql="select * from min_tabel"
set rs=conn.execute(strsql)

Men den anden af linjerne fejler hvis min_tabel ikke findes.

Kan jeg lavet et tjek på om tabellen findes inden jeg fyrer nævnte kode af?

Håber mit spg. giver mening.

Med venlig hilsen

Rune.


 
 
Jørn Andersen (02-11-2008)
Kommentar
Fra : Jørn Andersen


Dato : 02-11-08 19:21

On Sun, 2 Nov 2008 13:31:04 +0100, <Rune Nicolajsen> wrote:

>Jeg vil gerne lave et udtræk fra en tabel, men kun hvis tabellen findes.
<snip>
>Kan jeg lavet et tjek på om tabellen findes inden jeg fyrer nævnte kode af?

Du kan bruge ADOX-objektet, hvis det fx er en Access db.
Jeg kan ikke lige se, at den har en .Exists-metode, men den giver fejl,
hvis du forsøger at tilgå en tabel der ikke findes, så det kan du bruge:

<%
Option Explicit

Dim objConn, strDsn, objDb, objTable
Dim strDbName, strTableName

strDbName = "mindatabase.mdb"
strDsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath(strDbName)

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strDsn

Set objDb = Server.CreateObject("ADOX.Catalog")
Set objDb.ActiveConnection = objConn

On Error Resume Next
strTableName = "tblTabelNavn"
Set objTable = objDb.Tables(strTableName)
If Err.Number Then
Response.Write strTableName & " findes ikke"
Set objTable = Nothing
Else
Response.Write strTableName & " findes"
End If
Err.Clear
On Error GoTo 0


Set objDb = Nothing
objConn.Close
Set objConn = Nothing
%>

Mere om ADOX:
<url: http://www.4guysfromrolla.com/webtech/013101-1.shtml>
<url: http://msdn.microsoft.com/en-us/library/ms678270.aspx>

Med ADOX kan du manipulere det meste af en Access database, fx oprette
og slette tabeller - eller selve .mdb-filen.

Good luck!

--
Jørn Andersen,
Brønshøj

Ukendt (03-11-2008)
Kommentar
Fra : Ukendt


Dato : 03-11-08 11:57

Hej Jørn.

Tak for dit svar.

>>Jeg vil gerne lave et udtræk fra en tabel, men kun hvis tabellen findes.
> <snip>
>>Kan jeg lavet et tjek på om tabellen findes inden jeg fyrer nævnte kode
>>af?
>
> Du kan bruge ADOX-objektet, hvis det fx er en Access db.
> Jeg kan ikke lige se, at den har en .Exists-metode, men den giver fejl,
> hvis du forsøger at tilgå en tabel der ikke findes, så det kan du bruge:

<snip en masse kode>

Det er nok mig der er for dårligt til asp - men jeg forstår ikke helt alt
det kode. Jeg har bare brug for at lave en if der fyrer noget sql kode af,
hvis en give tabel findes, eks:

if [tabel=min_tabel findes] then
[gør en masse sql ting som jeg selv har eksisternede kode til]
else
[gør ingenting]
end if

Således mangler jeg det kode der kan tjekke om min_tabel findes.

Ved ikke om det helt er til at forstå?

Med venlig hilsen

Rune.



Stig Johansen (03-11-2008)
Kommentar
Fra : Stig Johansen


Dato : 03-11-08 15:53

<Rune Nicolajsen> wrote:

> Det er nok mig der er for dårligt til asp - men jeg forstår ikke helt alt
> det kode. Jeg har bare brug for at lave en if der fyrer noget sql kode af,
> hvis en give tabel findes, eks:

Og du er også lidt dårlig til at fortælle hvilken DB du bruger.
Jørn har forklaret hvordan du laver det, hvis du bruger Access, og

> if [tabel=min_tabel findes] then

kan lade sig gøre i nogle DBMS'er.

> Ved ikke om det helt er til at forstå?

It depends?

--
Med venlig hilsen
Stig Johansen

Ukendt (03-11-2008)
Kommentar
Fra : Ukendt


Dato : 03-11-08 16:37

> Og du er også lidt dårlig til at fortælle hvilken DB du bruger.
> Jørn har forklaret hvordan du laver det, hvis du bruger Access, og

Arh. Sorry. Jeg bruger Access.

>> if [tabel=min_tabel findes] then
>
> kan lade sig gøre i nogle DBMS'er.

DBMS?

Med venlig hilsen

Rune.



Stig Johansen (04-11-2008)
Kommentar
Fra : Stig Johansen


Dato : 04-11-08 06:23

<Rune Nicolajsen> wrote:

>> Og du er også lidt dårlig til at fortælle hvilken DB du bruger.
>> Jørn har forklaret hvordan du laver det, hvis du bruger Access, og
>
> Arh. Sorry. Jeg bruger Access.

Ok - så er det Jørn's løning du skal gå efter.

>>> if [tabel=min_tabel findes] then
>>
>> kan lade sig gøre i nogle DBMS'er.
>
> DBMS?

= Data Base Management System.
Hvis det f.eks. var MS SQLServer, så ligger metadata som almindelige
tabeller i databasen.
Her kan man lave ganske almindelige SELECT's mod tabelnavne, feltnavne m.v.

Men Access har ikke rigtig denne facilitet.

--
Med venlig hilsen
Stig Johansen

Jørn Andersen (03-11-2008)
Kommentar
Fra : Jørn Andersen


Dato : 03-11-08 20:58

On Mon, 3 Nov 2008 11:57:16 +0100, <Rune Nicolajsen> wrote:

>Det er nok mig der er for dårligt til asp - men jeg forstår ikke helt alt
>det kode. Jeg har bare brug for at lave en if der fyrer noget sql kode af,
>hvis en give tabel findes, eks:
>
>if [tabel=min_tabel findes] then
>[gør en masse sql ting som jeg selv har eksisternede kode til]
>else
>[gør ingenting]
>end if
>
>Således mangler jeg det kode der kan tjekke om min_tabel findes.
>
>Ved ikke om det helt er til at forstå?

Jo, det er helt forstået (også første gang), men jeg kender ikke nogen
"simpel" måde at checke, om en fil findes. Men med ADOX kan du gøre det.

Hvis du vil gøre din kode mere overskuelig, kan du lægge tabel-checket i
en funktion, så den ikke forstyrrer din løbende kode mere en højst
nødvendigt.

Følgende er under forudsætning af, at du har:
objConn - din databaseforbindelse
strDbName - navnet på databasen
strTableName - navnet på den tabel, der skal testes
- ellers tilret navne, så de passer til hvad du har

<%
If fktFindesTabel(objConn, strDbName, strTableName) Then
' [gør en masse sql ting]
Else
' [gør ingenting]
End If


' Funktion til at checke, om en tabel findes
Function fktFindesTabel(varObjConn, varStrDbName, varStrTableName)
Dim objDb, objTable
Dim varBlnResponse

Set objDb = Server.CreateObject("ADOX.Catalog")
Set objDb.ActiveConnection = varObjConn

On Error Resume Next
Set objTable = objDb.Tables(strTableName)
If Err.Number Then
varBlnResponse = False
Else
varBlnResponse = True
End If
Err.Clear
On Error GoTo 0

Set objDb = Nothing
fktFindesTabel = varBlnResponse
End Function

%>


Good luck!

--
Jørn Andersen,
Brønshøj

Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409074
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste