Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

SQL + VB script

Pagina: 1
Acties:

  • Michieas
  • Registratie: April 2011
  • Laatst online: 10:21
Ik heb een werkende SQL query die gekoppeld is aan VB script.
Er worden verschillende waarden opgevraagd waaronder een waarde uit de kolom JobDepId. In die kolom staan verschillende afdelingen vermeld. In de oude situatie was dit alleen van toepassing op 1 afdeling, in de nieuwe situatie moeten de gegevens van verschillende afdelingen gehaald word.
Wanneer ik de query als volgt aanpast .... AND (JobDepId = 'Afdeling1' OR JobDepId = 'Afdeling2') krijg ik een goede uitkomst uit de database.
In het VB script worden de gegevens volgens mij uit de uitkomst van de query gehaald met:
Dim strJobDepId
strJobDepId = GetValueFromNode(Record, "JobDepId")
strTable = strTable & " <td>" & strJobDepId & " </td>" &VbCrLf

Daarna komt er een stuk waarin de tabel (rapport wat automatisch gemaild word) opgebouwd word.

Het probleem is dat wanneer ik gegevens in query tussen aanhalingstekens zet het VB script niet meer werkt. Doordat er iets niet klopt word er ook geen automatisch mail gestuurd.

Ik hoop dat bovenstaand een beetje duidelijk is aangezien mijn kennis over SQL en VB scripting minimaal is. Door af te kijken in bestaande zaken kom ik een heel eind maar hier kom ik nu niet meer uit.

  • ValHallen
  • Registratie: September 2005
  • Niet online

ValHallen

Fryslân Boppe!

Gooi er een escape in \', op deze manier:
code:
1
AND (JobDepId = \'Afdeling1\' OR JobDepId = \'Afdeling2\')


Volgens mij zou het dan je probleem op moeten lossen.

Intel i7-12700KF/Giga-Byte B760I Aorus Pro DDR4/MSI Geforce 1080Ti 11Gb/Corsair 2x16.384MB DDR4-3200/Samsung SSD 980 Pro 1 Tb/Crucial MX500 1 Tb/Seagate 1 Tb
.Gertjan.: Er is maar een goede Mac en dat is die gele M langs de snelweg :D


  • Michieas
  • Registratie: April 2011
  • Laatst online: 10:21
ValHallen schreef op donderdag 08 mei 2014 @ 13:21:
Gooi er een escape in \', op deze manier:
code:
1
AND (JobDepId = \'Afdeling1\' OR JobDepId = \'Afdeling2\')


Volgens mij zou het dan je probleem op moeten lossen.
Helaas... Wanneer jouw voorgestelde escape doe geeft de query een incorrect syntax. Ik heb ook alle andere mogelijkheden geprobeerd maar blijf een foutmelding krijgen.

code:
1
AND (JobDepId = \'Afdeling1'\ OR JobDepId = \'Afdeling2'\)

code:
1
AND (JobDepId = '\Afdeling1\' OR JobDepId = '\Afdeling2\')

code:
1
AND (JobDepId = '\Afdeling1'\ OR JobDepId = '\Afdeling2'\)

  • ValHallen
  • Registratie: September 2005
  • Niet online

ValHallen

Fryslân Boppe!

Heb je dan eventueel het deel van het script waar het om gaat?

Intel i7-12700KF/Giga-Byte B760I Aorus Pro DDR4/MSI Geforce 1080Ti 11Gb/Corsair 2x16.384MB DDR4-3200/Samsung SSD 980 Pro 1 Tb/Crucial MX500 1 Tb/Seagate 1 Tb
.Gertjan.: Er is maar een goede Mac en dat is die gele M langs de snelweg :D


  • Big Womly
  • Registratie: Oktober 2007
  • Laatst online: 01-09 13:39

Big Womly

Live forever, or die trying

Het zou handig zijn dat je die foutmelding hier eens neerpoot, dan kunnen we toch al gerichter gaan zoeken.

Sowieso, als je bezig bent met variabele input in een query die komt van een user, kan je best prepared statements gebruiken.

Wat je ook kan proberen, in plaats van escapen, is concateneren
code:
1
"And (JobDepId = " & chr(39) & "Afdeling1" & chr(39) & " OR JobDepId = " & chr(39) & "Afdeling2" & chr(39) & ")"


39 = '
34 = "

[ Voor 19% gewijzigd door Big Womly op 08-05-2014 13:58 ]

When you talk to God it's called prayer, but when God talks to you it's called schizophrenia


  • Michieas
  • Registratie: April 2011
  • Laatst online: 10:21
code:
1
2
3
4
SELECT JobDescr, JobRecStatus, JobReportDate, JobEqmId, JobSkcId, JobDepId, JobFeedbackText
 FROM   dba.Job 
 WHERE  JobSkcId ='INSTR' AND JobDescr LIKE '%SOORT%' AND JobReportDate> = {ts '2013-08-01 00:00:01'} 
        AND JobRecStatus = 4 AND JobDepId = 'AFDELING'


Bovenstaand de query zoals die nu werkt.
Dat zit weer gelinkt aan het VB script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim strJobDescr, strJobRecStatus, strJobReportDate, strJobEqmId, strJobSkcId, strJobDepId, strJobFeedbackText
        Dim strEmpEmailAddress
        Dim strSql

        strJobDescr         = GetValueFromNode(Record, "JobDescr")
        strJobRecStatus     = GetValueFromNode(Record, "JobRecStatus")
        strJobReportDate    = GetValueFromNode(Record, "JobReportDate")
        strJobEqmId         = GetValueFromNode(Record, "JobEqmId")
        strJobSkcId     = GetValueFromNode(Record, "JobSkcId")
        strJobDepId         = GetValueFromNode(Record, "JobDepId")
        strJobFeedbackText  = GetValueFromNode(Record, "JobFeedbackText")

        strTable = strTable & "     <tr>"                                   &VbCrLf
        strTable = strTable & "         <td>" & strJobDescr & "&nbsp;</td>"             &VbCrLf
        strTable = strTable & "         <td>" & strJobRecStatus & "&nbsp;</td>"             &VbCrLf         
        strTable = strTable & "         <td>" & strJobReportDate & "&nbsp;</td>"                &VbCrLf         
        strTable = strTable & "         <td>" & strJobEqmId & "&nbsp;</td>"             &VbCrLf         
        strTable = strTable & "         <td>" & strJobSkcId & "&nbsp;</td>"             &VbCrLf 
        strTable = strTable & "         <td>" & strJobDepId & "&nbsp;</td>"             &VbCrLf         
        strTable = strTable & "         <td>" & strJobFeedbackText & "&nbsp;</td>"              &VbCrLf         
        strTable = strTable & "     </tr>"                                  &VbCrLf


In het VB script zit nog een stuk voor automatisch mailen en opbouw van een rapport.

Wanneer ik dus meerdere afdelingen toe wilt voegen (JobDepId = 'Afdeling1' OR JobDepId = 'Afdeling2') vermoed ik dat er iets fout gaat in het VB script waardoor deze niet afgemaakt kan worden. Hierdoor word er geen automatisch mail gestuurd welke aan het eind van het VB script zit.

Zoals vermeld is mijn kennis minimaal en probeer door te doen er wat van te leren.
Pagina: 1