/ Forside/ Teknologi / Udvikling / ASP / Spørgsmål
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
Problemer med funktion
Fra : Gizmo-man
Vist : 538 gange
100 point
Dato : 24-10-06 14:34

Jeg har lavet følgende kode til at tjekke om den fil der uploades allerede findes i databasen. Og koden virker for såvidt også godt nok, bortset fra at jeg ikke kan bruge "Response.Write filename" til at udskrive det nye filnavn med, for gør jeg det så vil den lægge det nye filnavn det sted på siden hvor funktionen er. Den skulle jeg meget gerne lægge det i den ( ) jeg har lavet.
Jeg har prøvet med "Checkfile = filename", men det ser ikke ud til at virke, hvad skal jeg gøre ?

<%
Function Checkfile(filename)
strSQL = "Select * From files Where fileFilename='" & filename & "'"
Set rsUsercheck = ConnMain.Execute(strSQL)
If (rsUsercheck.EOF OR rsUsercheck.BOF) Then
Response.Write filename
Else
Randomize
filenumber = Int(Rnd*10000)+1
newfilename = "" & filename & "_" & filenumber & ""
Checkfile newfilename
End If
End Function

testfile = "etfilnavn"
str = "from (" & testfile & ") to (" & Checkfile(testfile) & ")"
Response.Write str
%>

 
 
Accepteret svar
Fra : smorch

Modtaget 100 point
Dato : 24-10-06 16:56

<%
Function Checkfile(filename)
strSQL = "Select * From files Where fileFilename='" & filename & "'"
Set rsUsercheck = ConnMain.Execute(strSQL)
If not (rsUsercheck.EOF OR rsUsercheck.BOF) Then
   Checkfile = filename
Else
   Randomize
   filenumber = Int(Rnd*10000)+1
   newfilename = "" & filename & "_" & filenumber & ""
   Checkfile = newfilename
End If
End Function

Response.Write Checkfile("testfile")
%>


Kommentar
Fra : smorch


Dato : 24-10-06 17:01

Linien

If (rsUsercheck.EOF OR rsUsercheck.BOF) Then

betyder: Hvis curseren er ved begyndelsen aller slutningen af forespørgselsresultatet ~ hvilket svarer til et tomt resultat ~ ingen poster fundet.

Derfor skal der er NOT ind foran for at få et resultat ud af søgningen.

Mvh

sMorch

Kommentar
Fra : Gizmo-man


Dato : 24-10-06 17:54

Det virker, men jeg kan ikke lige se hvad forskellen er. Udover at din kode ikke tjekker det nye filnavn i db'en, og det skal den jo gøre ellers kan den jo oprette et filnavn som alligevel findes i db'en...

If (rsUsercheck.EOF OR rsUsercheck.BOF) Then skal ikke have et NOT ind foran, den spørger jo om tabel'en er tom og hvis den er det, skal den bare sende det originale filnavn tilbage og gemme det, eller skal skal den gå ned og lave et nyt...

Kommentar
Fra : smorch


Dato : 24-10-06 19:02

Her får du fortløbende numre i stedet for randum numre - og jo : navnet BLIVER checket i databasen.

<%
Function Checkfile(filename)
strSQL = "Select * From files Where filename='" & filename & "'"
Set rsUsercheck = ConnMain.Execute(strSQL)
If rsUsercheck.EOF Then
   Checkfile = filename
Else
   Randomize
   filenumber = Int(Rnd*10000)+1
   newfilename = "" & filename & "_" & nytFilnummer(filename) & ""
   Checkfile = newfilename
End If


End Function
function nytFilnummer(filename)
   strSQL = "Select count(*) AS antal From iles Where filename='" & filename & "'"
   Set rs = ConnMain.Execute(strSQL)
   nytFilnummer = rs("antal")+1
end function

Response.Write Checkfile("Testfil")
%>

Kommentar
Fra : smorch


Dato : 24-10-06 19:08

Jeg glemte lige at fjerne linien

filenumber = Int(Rnd*10000)+1

som så ikke er nødvendig

Kommentar
Fra : Gizmo-man


Dato : 24-10-06 19:18

Okay, hvis din første kode tjekker det nye filnavn, så tror jeg helst jeg vil bruge den, da jeg har fået tilpasset den til min kode...

Jeg takker for hjælpen og giver dig hermed point...

Kommentar
Fra : smorch


Dato : 24-10-06 20:02

Den første koder checker IKKE det nye filnavn - det ville kræve en funktion mere, og derfor valgte jeg at lave en funktion, der danner fortløbende numre - og det samme nummer kan så ikke findes to gange.

Du kan jo bare bruge den sidste kode, og lave denne funktion om til at checke det nye filnavn i stedet for.

Mvh

smorch

Kommentar
Fra : Gizmo-man


Dato : 24-10-06 20:30

Kan jeg ikke bare gøre sådan i den første kode da ?

Function Checkfile(filename)
strSQL = "Select * From con_files Where fileFilename='" & filename & "' AND fileAddedBy=" & Session("userid") & ""
Set rsFilecheck = ConnMain.Execute(strSQL)
If (rsFilecheck.EOF OR rsFilecheck.BOF) Then
Checkfile = filename
Else
Randomize
filenumber = Int(Rnd*99999)+1
newfilename = "" & filenumber & "_" & filename & ""
Checkfile newfilename
End If
End Function

Kommentar
Fra : Gizmo-man


Dato : 24-10-06 20:37

Eller man kan ikke gøre som jeg lige har gjort, men jeg har da før lavet funktioner hvor jeg udføre en handling i og derefter kalder den samme funktion en/flere gang til...

Kommentar
Fra : smorch


Dato : 24-10-06 21:44

Jeg har ikke testet det, men ville det ikke give en løkke, du aldrig kommer ud af hvis ikke filnavnet eksisterer i forvejen?

Godkendelse af svar
Fra : Gizmo-man


Dato : 25-10-06 23:53

Tak for svaret smorch.

Kommentar
Fra : smorch


Dato : 26-10-06 07:38

sæl

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177422
Tips : 31962
Nyheder : 719565
Indlæg : 6407887
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste