/ 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
findes data allerede i db ??
Fra : Otto Leholt


Dato : 08-12-03 22:34

Hej
Jeg vil gerne kunne lave et check om hvorvidt data som indtastes af bruger
til db
allerede findes i db

Jeg har forsøgt med en funktion noget a la :

FUNCTION alreadyhere(thelink )
sqlstring = "Select link FROM tbllinks WHERE link=' " & thelink &"' "
SET RS = Con.Execute ( sqlstring)
IF RS.EOF THEN
alreadyhere = FALSE
ELSE
alreadyhere = TRUE
END IF
RS.CLOSE
END FUNCTION

IF alreadyhere( link ) = FALSE THEN
indsæt data bla bla bla bla
else
response.write " data findes allerede"
end if

Men jeg kan ikke få det til at virke ...????
håber nogen kan hjælpe mig videre

hilsen Otto




 
 
Jens Gyldenkærne Cla~ (08-12-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 08-12-03 22:58

Otto Leholt skrev:

> Jeg vil gerne kunne lave et check om hvorvidt data som
> indtastes af bruger til db
> allerede findes i db

Du kan gøre det ved hjælp af fejlhåndtering - forudsat at dit
linkfelt har et unikt indeks.

Forsøg at indsætte posten, hvis det fejler kan du fange fejlkoden
og udskrive en forklaring. Du kan se princippet her:
<http://www.4guysfromrolla.com/webtech/060399-1.shtml>. I eksemplet
bruger de ikke fejlkoderne, men du kan finde fejlkoden for "insert
ikke tilladt" og sørge for at denne "almindelige" fejl bliver
behandlet særskilt.


> FUNCTION alreadyhere(thelink )

Din funktion ser ikke forkert ud.

> Men jeg kan ikke få det til at virke ...????

Fortæl _hvordan_ du ikke kan få det til at virke. Ved sql-problemer
er det altid en god ide at udskrive den sql-sætning man kører - se
hvordan på siden her: <http://asp-faq.dk/article/?id=41>.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Otto Leholt (09-12-2003)
Kommentar
Fra : Otto Leholt


Dato : 09-12-03 00:50


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message - > >
Fortæl _hvordan_ du ikke kan få det til at virke.

Det er svært nok ..
ideen er jo- hvis linket allerede er registreret i db skal det ikke
indsættes igen.
Det er også godt nok - men nye link bliver heller ikke registreret.
Har byttet om på false og true io en uendelighed, men ..ja jeg er f.... up
nu af dette.
Undrer mig bare - syntes ikke jeg i mine bøger finder en enkel måde at
checke om data allerede er i db..?
hilsen Otto - og godnat



Chrisser (09-12-2003)
Kommentar
Fra : Chrisser


Dato : 09-12-03 08:10

Otto Leholt wrote:
> Undrer mig bare - syntes ikke jeg i mine bøger finder en enkel måde
> at checke om data allerede er i db..?
> hilsen Otto - og godnat

Hvilken database bruger du ?
Nyere versioner af MSSQL og MySql ( og sikkert flere andre ) understøtter
følgende syntaks:

"If Not Exists(Select id from tabel where id=" & id & ") Begin Insert Into
tabel ("& dine felter & ") values( " &dine værdier" & ") End"

Chrisser



Otto Leholt (09-12-2003)
Kommentar
Fra : Otto Leholt


Dato : 09-12-03 13:21


"Chrisser" <invalid@invalid.invalid> wrote >
> Hvilken database bruger du ?

Jeg bruger access 2000
hilsen Otto



Chrisser (09-12-2003)
Kommentar
Fra : Chrisser


Dato : 09-12-03 13:43

Otto Leholt wrote:
> Jeg bruger access 2000

Jeg ved desværre ikke om den understøtter exists, men du kunne jo lade det
komme an på en prøve - fordelen er at man kun behøver tilgå databasen én
gang.

Mvh
Chrisser



Jens Gyldenkærne Cla~ (09-12-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 09-12-03 11:32

Otto Leholt skrev:

>> Fortæl _hvordan_ du ikke kan få det til at virke.

> Det er svært nok ..

Har du læst det link jeg gav?


> ideen er jo- hvis linket allerede er registreret i db skal det
> ikke indsættes igen.

Det har jeg forstået.

> Det er også godt nok - men nye link bliver heller ikke
> registreret. Har byttet om på false og true io en uendelighed,

Med hvilket resultat? Hvis man skal kunne hjælpe dig, så skal du
sende en fejlmeddelelse - hvis du får en sådan - eller evt. bare
beskrive hvad der sker når du bruger en given kombination af kode.
Send gerne udvalgte linjer af din kode hertil.

Når du bare bytter om på false og true - eller i det hele taget
skifter koden vilkårligt - famler du i blinde og så kan det tage
lang tid at komme videre.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Otto Leholt (09-12-2003)
Kommentar
Fra : Otto Leholt


Dato : 09-12-03 13:49


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
>
> Har du læst det link jeg gav?
Ja men jeg syntes ikke at jeg umiddelbart bruge det ......eller var for
opkørt til at få noget ud af det .ellers mange tak !

> Med hvilket resultat? Hvis man skal kunne hjælpe dig, så skal du
> sende en fejlmeddelelse - hvis du får en sådan - eller evt. bare
> beskrive hvad der sker når du bruger en given kombination af kode.
> Send gerne udvalgte linjer af din kode hertil.

Jammen jeg får ikke nogen egentlig fejlmeddelelse.
Som det fungerer nu - afvises link som er i databasen som de skal, men
omvendt nye link indsættes tilgengæld ikke !
du kan se programmet her
http://213.237.9.227/leholt-webdesign/web-link/form.asp
og jeg har indlagt link på siden en txt fil som viser hele koden
Måske du kan se hvad der går galt / ikke fungerer rigtigt ..?

på forhånd tak - og tak for jeres respons
hilsen Otto Leholt



Jens Gyldenkærne Cla~ (09-12-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 09-12-03 13:36

Otto Leholt skrev:

> Jeg bruger access 2000

2 muligheder:

Uden fejlhåndtering:

<%


Dim SQL, link, rs

' linket fra din form ligger i variablen link. husk at validere
' inddata

SQL = "SELECT COUNT(*) as antal FROM tbllinks WHERE link = '" & _
   link & "'"


Set rs = conn.Execute(SQL)

If rs(0) = 0 Then

   ' linket ikke fundet, indsæt posten
   SQL = "INSERT INTO tbllinks (link) VALUES '" & _
           link & "'"
   Conn.Execute (SQL)

Else
   ' linket fundet, udskriv meddelelse
End If

' Luk og sluk rs/conn mv.

%>


Med fejlhåndtering:

Øverst på siden:
<% On Error Resume Next %>


Blokken som før:
<%
Dim SQL, link, rs

' linket fra din form ligger i variablen link. husk at validere
' inddata


' Vi prøver at indsætte direkte

   SQL = "INSERT INTO tbllinks (link) VALUES '" & _
           link & "'"
   Conn.Execute (SQL)

' Tjek om det er gået galt

   If Err.Number <> 0 Then
       ' Der er en fejl
       If Err.Number = [fejlkode fundet ved forsøg] Then
           ' Udskriv meddelelse om at linket findes i forvejen
       Else
           ' Anden/ukendt fejl - giv besked
       End If
   Else
       ' Ingen fejl - udskriv evt. "alt o.k.-besked"
   End If
       
%>


Fejlkoden jeg kalder [fejlkode fundet ved forsøg] kan du finde ved
at fjerne eller udkommentere "On Error Resume Next" og prøve at
indsætte et eksisterende link. Så vil asp-parseren skrive den på
siden.

Bemærk at fejlhåndteringsløsningen kun virker hvis linkfeltet er
unikt.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jens Gyldenkærne Cla~ (09-12-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 09-12-03 14:19

Otto Leholt skrev:

> Jammen jeg får ikke nogen egentlig fejlmeddelelse.
> Som det fungerer nu - afvises link som er i databasen som de
> skal, men omvendt nye link indsættes tilgengæld ikke !

Du overskriver formens action-parameter med et hidden-element. Det
gør at formen slet ikke virker i min browser.

For at fejlsøge funktionen kan du lægge nogle udskriftslinjer ind.
Primært er sql-strengen interessant:

FUNCTION alreadyhere(thelink )
sqlstring = "Select link FROM links WHERE link=' " & thelink &"' "

' Debuglinjer.
Response.write "SQL: " & sqlstring
Response.END
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Otto Leholt (09-12-2003)
Kommentar
Fra : Otto Leholt


Dato : 09-12-03 16:53


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message >
> For at fejlsøge funktionen kan du lægge nogle udskriftslinjer ind.
> Primært er sql-strengen interessant:
>
> FUNCTION alreadyhere(thelink )
> sqlstring = "Select link FROM links WHERE link=' " & thelink &"' "
>
> ' Debuglinjer.
> Response.write "SQL: " & sqlstring

Hej Igen
response.write sqlstring giver :
SQL: Select link FROM links WHERE link=' www.spiesrejsglad.dk'
Apostoffer er vel Ok - men er problemet mellemrummet mellem første apostrof
og www...?

Tak for jeres respons ... arbejder videre med det
hilsen Otto




Otto Leholt (09-12-2003)
Kommentar
Fra : Otto Leholt


Dato : 09-12-03 17:34

Hej igen
Nå nu virker det ..! Selvom jeg egentlig syntes det ikke burde .. eller sagt
på en anden måde , at jeg ikke rigitg forstår hvorfor det virker ..!

Ved at indsætte
<%
On error resume next
%>
og så bytte om på FALSE og TRUE i min FUNCTION alreadyhere ()
fungerede det. !

Jeg ændrede derefter en form på foregående side hvor jeg havde følgende
<form action="form_ac.asp" method="post" NAME="formadd" >
<input type=hidden NAME=Action VALUE=Add>
bla bla bla
endelige checkes det om der er indtastet data i alle formularens felter
hertil kaldes form action ...
FØR var der ikke citationstegn omkring <FORM ......NAME="formadd">
med citationstegn kunne jeg fjerne Onerror resume next
og det virker.
Jeg er dog stadig lidt frustreret over at jeg har byttet om på TRUE og FALSE
.....
det giver ikke mening for mig ...men måske det hører til en af de ting man
bare ikke skal bekymre sig over ..

Til Jens og jer andre - igen tusinde tak for jeres hurtige og omfattende
respons ..Det er jeg meget glad for.
Den nuværende kode til form_ac ligger på siden
http://213.237.9.227/leholt-webdesign/web-link/form.asp?pagename=Add%20Link

Jens - du skrev at du ikke kunne bruge formularen .. det er da vel ikke
rigtigt ..??

hilsen Otto






Jens Gyldenkærne Cla~ (09-12-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 09-12-03 22:35

Otto Leholt skrev:

> Ved at indsætte
> <%
> On error resume next

Husk så også at tjekke for evt. fejl senere.


> Jeg er dog stadig lidt frustreret over at jeg har byttet om på
> TRUE og FALSE ....

Prøv at håndkøre din funktion og se om det giver mere mening.


> Jens - du skrev at du ikke kunne bruge formularen .. det er da
> vel ikke rigtigt ..??

Jo - og det gælder stadig. Formen submittes slet ikke. Ved nærmere
eftersyn i din kode er det ikke spor underligt. Du benytter
vbscript til dels at validere og dels submitte formen. VBscript
virker kun i IE.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

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

Månedens bedste
Årets bedste
Sidste års bedste