[SQL] selecteren op niet ID veld.

Pagina: 1
Acties:

  • avon
  • Registratie: November 2002
  • Laatst online: 27-06-2025
Met asp ben ik bezig om een email nieuwsbrief systeem te maken, alleen
loop ik stuk op het volgde punt. Bij het verwijderen van een email adres
moet een record geselecteerd worden, waarbij alleen het email adres bekend
is. Dit doe ik met de volgende syntax;

code:
1
sql_delete = "DELETE FROM email WHERE email= " & var1 & ";"


Hierbij krijg ik dan de volgende melding,
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
of als ik duplicaten uitzet
Data type mismatch in criteria expression.
Als ik het met een WHERE email like '%" & var &"%';" doe gaat het wel goed
alleen iemand alleen een @ invoerd zijn al mijn records weg :( ..

Wat moet ik aan de syntax of tabel wijzigen om dit netjes te volbrengen?.
Er zit een Access db achter, gekoppeld via OBDC

[ Voor 11% gewijzigd door avon op 07-04-2003 09:15 ]

Gratis webwinkel beginnen? Met Onetoshop.com kunt u direct beginnen!


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

strings zet je tussen enkele quotes binnen je SQL query
ASP:
1
sql_delete = "DELETE FROM email WHERE email= '" & var1 & "';"

Today's subliminal thought is:


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

AvOn schreef op 07 April 2003 @ 09:15:
code:
1
sql_delete = "DELETE FROM email WHERE email= " & var1 & ";"

Als ik het met een WHERE email like '%" & var &"%';" doe gaat het wel goed
alleen iemand alleen een @ invoerd zijn al mijn records weg :( ..
moet je die var1 niet quoten?
daarnaast moet je voordat je zo'n query uitvoerd even je input checken ;)

  • avon
  • Registratie: November 2002
  • Laatst online: 27-06-2025
Je hebt gelijk Annie!!..

Thnx, bij al die andere velden selecteerde ik op ID en dat ging wel goed zonder ' '

[ Voor 7% gewijzigd door avon op 07-04-2003 09:23 ]

Gratis webwinkel beginnen? Met Onetoshop.com kunt u direct beginnen!


  • avon
  • Registratie: November 2002
  • Laatst online: 27-06-2025
Gelijk nog maar even een tweede vraag erbij, is het ook mogelijk om een errorlevel er uit
te krijgen?, zoiets van 1 is fout record niet gevonden, en 0 bijvoorbeeld alles goed.

Gratis webwinkel beginnen? Met Onetoshop.com kunt u direct beginnen!


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:39

Janoz

Moderator Devschuur®

!litemod

Ja, omdat dat over het algemeen getallen zijn. Daar hoeven geen '-s omheen ;)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • avon
  • Registratie: November 2002
  • Laatst online: 27-06-2025
Janoz schreef op 07 April 2003 @ 09:40:
Ja, omdat dat over het algemeen getallen zijn. Daar hoeven geen '-s omheen ;)
weetje misschien of ik ook een soort error levels er uit kan krijgen?

Gratis webwinkel beginnen? Met Onetoshop.com kunt u direct beginnen!


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:39

Janoz

Moderator Devschuur®

!litemod

Wat bedoel je moet 'error levels' en waar(om) wil je die uit krijgen?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • avon
  • Registratie: November 2002
  • Laatst online: 27-06-2025
nou bijvoorbeeld, als ik opgeef:

sql_update = "UPDATE email Set status='1' WHERE email= '" & var1 & "';"
con2.Execute sql_update

Kan ik dan ook checken of hij met succes is uitgevoerd?

Gratis webwinkel beginnen? Met Onetoshop.com kunt u direct beginnen!


  • Mickman
  • Registratie: Juni 2001
  • Laatst online: 29-03 18:11
doet hij ook :) zou een beetje kl#te dbms zijn zonder error codes

  • avon
  • Registratie: November 2002
  • Laatst online: 27-06-2025
Mickman schreef op 07 April 2003 @ 10:32:
doet hij ook :) zou een beetje kl#te dbms zijn zonder error codes
is het ook mogelijk om die code op te vragen?, zodat ik kan checken of de
query succes vol is uitgevoerd.

Gratis webwinkel beginnen? Met Onetoshop.com kunt u direct beginnen!


Verwijderd

volgens mij is je query succes vol zoalang je geen foutmelding krijgt. Of je query goed is zou je toch in je DB moeten kijken.

  • avon
  • Registratie: November 2002
  • Laatst online: 27-06-2025
tja, maar als ik nu een dubbel email adres ingeef, dan krijg ik de melding
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.
/email/index.asp, line 89
niet erg fraai dus, een andere oplossing is om vooraf te checken bij het ingeven
door middel van een tweede query maar dat vertraagd ernstig, dus een ander idee?

[ Voor 3% gewijzigd door avon op 07-04-2003 10:41 ]

Gratis webwinkel beginnen? Met Onetoshop.com kunt u direct beginnen!


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Beslis zelf eens. Wil je wel of geen dubbele? Als je het wel wilt moet je je tabel daarop aanpassen en als je het niet wilt moet je er een check voor maken of met deze melding kunnen leven. Het is zo simpel als dat. Ik zie het probleem ook niet.

We adore chaos because we like to restore order - M.C. Escher


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Errors afvangen in vbscript is niet geweldig geimplementeerd maar het kan wel. Bijv:

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
' bla
' bla

On Error Resume Next
conn2.execute (sql)

If Err.Number > 0 Then
  ' doe iets
End If
On Error Goto 0

' bla
' bla


Voor meer info verwijs ik je naar een willekeurige tutorial of reference.

Today's subliminal thought is:


Verwijderd

Wat je kan doen in voor dat je de gegevens in de DB weg schrijft eerst een select statement uitvoeren op je primairy key. Vervolgens laat je tellen hoeveel records er terug gegeven worden (houd rekening met BOF / EOF). Als er meer worden terug gegeven als dat dat zou moeten zijn wanneer er geen gegevens zijn geselecteerd dan geef je een foutmelding. Als dat niet het geval is dan schrijf je die gegevens pas weg.

  • avon
  • Registratie: November 2002
  • Laatst online: 27-06-2025
Jurien, op die manier is het niet zo efficient als de code van Annie, omdat
je op die manier wat meer tijd kwijt bent voor het inlezen/doorlopen e.d.

code:
1
2
3
4
5
6
7
8
On Error Resume Next
wrtmsg.Execute sql_msginsert

If Err.Number = 0 Then
Response.write "Geslaagd"
else 
Response.write "Mislukt"
End If


Dit is denk ik de beste (lees:snelste) methode, thnx Annie

[ Voor 41% gewijzigd door avon op 07-04-2003 13:52 ]

Gratis webwinkel beginnen? Met Onetoshop.com kunt u direct beginnen!


  • avon
  • Registratie: November 2002
  • Laatst online: 27-06-2025
LordLarry schreef op 07 April 2003 @ 10:57:
Beslis zelf eens. Wil je wel of geen dubbele? Als je het wel wilt moet je je tabel daarop aanpassen en als je het niet wilt moet je er een check voor maken of met deze melding kunnen leven. Het is zo simpel als dat. Ik zie het probleem ook niet.
Er was geen probleem, alleen was ik opzoek naar de best code!!

Gratis webwinkel beginnen? Met Onetoshop.com kunt u direct beginnen!


Verwijderd

Als je idd echt alleen wil weten of die zonder fouten weg kan worden geschreven dan is die manier van Annie denk ik de beste oplossing. Maar als op wat meer dingen wil controleren dan is het wel zo netjes om de gebruiker een duidelijke foutmelding terug te geven. Weet niet of dat goed gaat lukken op die manier.

  • avon
  • Registratie: November 2002
  • Laatst online: 27-06-2025
Verwijderd schreef op 07 april 2003 @ 13:56:
Als je idd echt alleen wil weten of die zonder fouten weg kan worden geschreven dan is die manier van Annie denk ik de beste oplossing. Maar als op wat meer dingen wil controleren dan is het wel zo netjes om de gebruiker een duidelijke foutmelding terug te geven. Weet niet of dat goed gaat lukken op die manier.
In het geval van een fout kan je natuurlijk later altijd nog de fout gaan opsporen,
maar in het geval er geen fout is scheelt het zeker veel tijd.

Vorige keer deed ik een simpel truukje waarbij aan het begin en het einde
van het asp script de tijd werd weergegeven (zodoende bepaal je dus eigenlijk
de doorloop tijd) en met een loopje door een db duurt veel langer dan een
SQL query.

Gratis webwinkel beginnen? Met Onetoshop.com kunt u direct beginnen!


  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Dit zou je ook kunnen doen, ipv zo'n ranzige On Error Goto:

ASP:
1
2
3
4
5
6
7
8
9
objConn.Execute "DELETE FROM email WHERE email = '" & sEmail & "';"

Do Until objConn.State And adStateExecuting: Loop

If objConn.Errors.Count > 0 Then
   For Each Error In objConn.Errors
      Response.Write "Error " & Error.Number & " [" & Error.Source & "]: " & Error.Description & "<br><br>"
   Next
End If

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?

Pagina: 1