[VB6] quotes toevoegen aan een string (SQL statement)

Pagina: 1
Acties:
  • 120 views sinds 30-01-2008
  • Reageer

  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Topicstarter
Ik heb de volgende code:

SQLString = "select * from " & TableName & " where " & CodeName & " = " & SearchString

Met :
• TableName: de naam van de tabel
• CodeName: de naam van het Veld
• SearchString: de naam van de string die hij moet zoeken.

Nu meen ik dat er quotes om de laatste statement moet:

SELECT * FROM tabel WHERE codename = "Blaat"

Maar nu heb ik dus:

SELECT * FROM tabel WHERE codename = Blaat

En dat gaat fout.

Hoe krijg ik de " er om heen?

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


Verwijderd

Visual Basic .NET:
1
2
3
4
5
Public Function AddQuotes(ByVal txt As String)
    AddQuotes = Replace(txt, "'", "''")
End Function

SQLString = "select * from " & TableName & " where " & CodeName & " = '" & AddQuotes (SearchString) & "'"


werkt voor mij :-)

Oeps |:(

wat ik dacht dat je problemen had met ' in je Where statement,
mijn functie plaats daar dus een extra ' (singleqoute) bij.
Zodat sql niet over de zeik gaat

nu klopt ie

[ Voor 99% gewijzigd door Verwijderd op 10-04-2003 17:44 ]


  • Surehand
  • Registratie: Februari 2003
  • Laatst online: 18-08 15:40
Twee zaken:
  • " kun je toevoegen met de functie Chr(34)
  • Als het om een Oracle database gaat, met je single quotes gebruiken (')

  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

om je vraag te beantwoorden:
SELECT * FROM tabel WHERE codename = ""Blaat""

dus "" in een string geeft " ;)

maar met enkele quotes zou idd ook weleens kunnen werken, moet je wel ff de functie van meteorite gebruiken :)


wordt wel zo overigens :)
[code]
Public Function AddQuotes(ByVal txt As String)
AddQuotes = Replace(txt, "'", "''")
End Function

SQLString = "select * from " & TableName & " where " & CodeName & " = '" & AddQuotes (SearchString) & "'"
[/code]

[ Voor 43% gewijzigd door j_du_pee op 10-04-2003 17:38 ]

kaart != map && bottel != fles
Wacht op antwoord


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 15-08 11:47

Sponge

Serious Game Developer

Surehand schreef op 10 April 2003 @ 17:32:
Twee zaken:
  • " kun je toevoegen met de functie Chr(34)
  • Als het om een Oracle database gaat, met je single quotes gebruiken (')
Overigens kan je ook een constante maken, zoals:
code:
1
Private Const Quote = """"


En die gaan gebruiken ;).

Overigens klein beetje miere-neuken, Chr$(34) is sneller, en beter, aangezien daar geen variant conversie in komt. dit geldt voor alle stringfuncties (left,mid,right,trim), en bij veelvoudig gebruik is het zeker aan te raden $ erbij te zetten.

Verwijderd

j_du_pee schreef op 10 april 2003 @ 17:36:

wordt wel zo overigens :)
[code]
Public Function AddQuotes(ByVal txt As String)
AddQuotes = Replace(txt, "'", "''")
End Function

SQLString = "select * from " & TableName & " where " & CodeName & " = '" & AddQuotes (SearchString) & "'"
[/code]

Je hebt gelijk :-) is te laat voor me denk dat ik maar naar huis gaat kan nu ff geen code meer zien 8)7

[ Voor 31% gewijzigd door Verwijderd op 10-04-2003 17:41 ]


  • Surehand
  • Registratie: Februari 2003
  • Laatst online: 18-08 15:40
j_du_pee schreef op 10 April 2003 @ 17:36:
om je vraag te beantwoorden:
SELECT * FROM tabel WHERE codename = ""Blaat""

dus "" in een string geeft " ;)
Dat klopt wel, maar dan wordt het SELECT * FROM tabel WHERE codename = """Blaat"""

;)

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:02
Waarom maak je geen gebruik van parameters in je SQL statement die je dan kan gaan opvullen ipv die query in je code te gaan concateneren?

https://fgheysels.github.io/


  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Topicstarter
whoami schreef op 10 april 2003 @ 20:33:
Waarom maak je geen gebruik van parameters in je SQL statement die je dan kan gaan opvullen ipv die query in je code te gaan concateneren?
:? Leg uit whoami...

Ik snap niet wat je bedoelt. Ik ben er nog maar sinds kort mee bezig (VB en databases)

Visual Basic:
1
2
3
4
5
Public Function AddQuotes(ByVal txt As String)
    AddQuotes = Replace(txt, "'", "''")
End Function

SQLString = "select * from " & TableName & " where " & CodeName & " = '   " & AddQuotes (SearchString) & "  '  "


Volgens mij werkt dit niet vanwege de twee single quotes die op deze manier niet wordt vervangen......

Volgens mij werkt dit beter:

Visual Basic:
1
2
3
4
5
Public Function AddQuotes(ByVal txt As String)
    AddQuotes = Replace(txt, "'", "''")
End Function

SQLString = AddQuotes ("select * from " & TableName & " where " & CodeName & " = '" & SearchString & "'"

[ Voor 64% gewijzigd door Schonhose op 11-04-2003 08:29 ]

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:02
Athos schreef op 11 april 2003 @ 08:17:
[...]


:? Leg uit whoami...

Ik snap niet wat je bedoelt. Ik ben er nog maar sinds kort mee bezig (VB en databases)
Ik weet niet precies hoe je het in VB doet (heb geen ervaring met VB), maar in C# of in Delphi doe je dat als volgt:

code:
1
2
3
4
5
SqlCommand cmdGetEmpl = new SqlCommand();

cmdGetEmpl.CommandText = "SELECT * FROM tblEmployees WHERE empid = @p_empId";
cmdGetEmpl.Parameters.Add("@p_empId", SqlDbType.Int);
cmdGetEmpl.Parameters["@p_empId"].Value = 7;

of in Delphi:
code:
1
2
Query1.SQL.Text = 'SELECT * FROM tblEmployee WHERE empid = :p_empId';
Query1.ParamByName ('p_empId').AsInteger = 7;


Ik vermoed dat je in VB een parameter met een ? moet definieren.

Idd:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sqlReqDefn = "SELECT "
   sqlReqDefn = sqlReqDefn & "REQ_CODE, RELEASE_ID, FULL_NAME, "
   sqlReqDefn = sqlReqDefn & "PROMOTION_LEVEL, VIEW_NAME, VALIDATION_CLASS, "
   sqlReqDefn = sqlReqDefn & "HELP_URL, ROLE, PROC_ADMIN, "
   sqlReqDefn = sqlReqDefn & "DURATION, START_TYPE, PRIORITY, "
   sqlReqDefn = sqlReqDefn & "WF_TEMPLATE, CHANGED_BY, IS_HIDDEN, NOTES, CHANGE_DATE "
   sqlReqDefn = sqlReqDefn & "FROM IBP.IBPD_REQ_DEF "
   sqlReqDefn = sqlReqDefn & "WHERE "
   sqlReqDefn = sqlReqDefn & "REQ_CODE = ? AND RELEASE_ID = ? "
   sqlReqDefn = sqlReqDefn & "ORDER BY FULL_NAME DESC"
   
   CreateADOCommand cmd, sqlReqDefn
   cmd.Parameters.Item(0) = vReqCode
   cmd.Parameters.Item(1) = vReleaseID

zie ook hier

[ Voor 36% gewijzigd door whoami op 11-04-2003 09:33 ]

https://fgheysels.github.io/


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 21-06 17:10
Vanuit VB6 moet je volgens mij juist de enkele quotes gebruiken!

Visual Basic:
1
strSQL = "SELECT * FROM tabel WHERE codenaam = 'blaat'"


ff toegepast op jouw vraag:
Visual Basic:
1
SQLString = "select * from " & TableName & " where " & CodeName & '" = " & SearchString & "'" 

[ Voor 50% gewijzigd door riezebosch op 12-04-2003 22:08 ]

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • vbmot
  • Registratie: April 2003
  • Laatst online: 15-07 17:46
Chr(34) opnemen in je query. Dit geeft een quote in een string...

Voorbeeld:
"Het woord " & Chr(34) & "woord" & Chr(34) & "staat tussen quotes"
Geeft:
Het woord "woord" staat tussen quotes

Ook maar dat ik dat weet!


Verwijderd

vbmot schreef op 12 april 2003 @ 22:44:
Chr(34) opnemen in je query. Dit geeft een quote in een string...

Voorbeeld:
"Het woord " & Chr(34) & "woord" & Chr(34) & "staat tussen quotes"
Geeft:
Het woord "woord" staat tussen quotes
Maar zoals al eerder gezegd kan het veel simpeler:
"Het woord ""woord""staat tussen quotes"
Geeft precies hetzelfde, en
"Het woord """ & sMyWord & """staat tussen quotes"
zorgt ervoor dat sMyWord tussen quotes komt. Je wordt soms gek van de quotes, maar het is veel sneller tikken dan dat stomme Chr(34) :).

  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Topicstarter
Thanks nog voor de replies maar het was inmiddels al opgelost.

Toch kan het nooit kwaad om andere mogelijkheden te leren kennen. :)

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005

Pagina: 1