Avatar billede webbe Nybegynder
12. april 2002 - 13:30 Der er 18 kommentarer og
1 løsning

Tjek antal karakterer - HASTER

Hejsa

Jeg søger et script der kan tjekke om et DB-felt kun indeholder 4 karakterer og hvis ja, så skal der kobles en ekstra karakter på.

Er der nogen der kan hjælpe?
Avatar billede kimiwan Nybegynder
12. april 2002 - 13:33 #1
if len(string) then string = string & "x"
Avatar billede kimiwan Nybegynder
12. april 2002 - 13:33 #2
sorry..
if len(string) = 4 then string = string & "x"
Avatar billede webbe Nybegynder
12. april 2002 - 13:34 #3
Det vil sige at det skal være:

if len(4) Then
  string = "1"&string
end if

???
Avatar billede kimiwan Nybegynder
12. april 2002 - 13:38 #4
if len(string) = 4 Then
  string = "1"&string
end if

eller, hvis du som her bare skal bruge en enkelt linje mellem "if then" og "else", kan du gøre det på een linje:

if len(string) = 4 then string = "1" & string
Avatar billede webbe Nybegynder
12. april 2002 - 13:41 #5
Og hvad så når jeg skal koble det sammen med en DB?
Avatar billede kimiwan Nybegynder
12. april 2002 - 13:44 #6
er det fordi du skal opdatere en række databasefelter med fire karakterer til at indeholde fem i stedet?

hvilken database er det?
Avatar billede webbe Nybegynder
12. april 2002 - 13:44 #7
Jeps - lige nøjagtigt - det er på en oracle database
Avatar billede webbe Nybegynder
12. april 2002 - 13:49 #8
Har pt følgende kode:

sql = "SELECT * FROM HardwareIndex"
Set rs = Connect.Execute(sql)

If len(string) = "4" Then
    new_account = "1"&rs("Id")
End if

do while not (rs.bof or rs.eof)
    Response.Write new_account
rs.movenext
loop

men det gir' følgende fejl:

Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment: 'string'

/axapta/checkAccount.asp, line 8
Avatar billede kimiwan Nybegynder
12. april 2002 - 13:52 #9
du kan lave det direkte i sql strengen og eksekvere den.. jeg har ikke helt tjek på sql syntaksen i oracle, men i alm. ord er det noget i den stil her:

set cn = server.createobject("adodb.connection")
cn.open strConnect 'din connection string
cn.execute("UPDATE tablenavn SET feltnavn = concatenate('1' og feltnavn) WHERE længden på feltnavn = 4")
cn.close
set cn = nothing
Avatar billede webbe Nybegynder
12. april 2002 - 13:55 #10
Har selv styr på syntaxen, men kan ikke gennemskue hvordan jeg laver tjekket m.m.
Avatar billede kimiwan Nybegynder
12. april 2002 - 13:58 #11
"UPDATE tablenavn SET feltnavn = '1' || feltnavn WHERE length(feltnavn) = 5"

den update statement skulle gøre det hele for dig.. så behøver du ikke trække det ud i et recordset og lave det i aspkoden.
Avatar billede kimiwan Nybegynder
12. april 2002 - 14:08 #12
hehe.. det skal selvfølgelig være length(feltnavn) = 4 i stedet for 5 !!!
Avatar billede webbe Nybegynder
12. april 2002 - 14:15 #13
Er ved at finde noget af det rigtige, men den tager også de poster med hvor der er mere end 4 karakterer med - det skal den ikke!
Avatar billede kimiwan Nybegynder
12. april 2002 - 14:17 #14
hm.. hvis du har ændret 5 til 4 efter length(), skulle det vist ellers fungere.
Avatar billede kimiwan Nybegynder
12. april 2002 - 18:29 #15
Fik du den til at fungere?
Avatar billede snuseren.dk Nybegynder
13. april 2002 - 08:41 #16
Prøv det istedet:

"UPDATE tablenavn SET feltnavn = '1' WHERE length(feltnavn) = 5"
Avatar billede _et Praktikant
13. april 2002 - 21:42 #17
if (len(string) > 5) then
    Response.write "String er for lang"
else if (len(string) < 5) then
  if (len(string) = 4) then
    string = string & "x"
  else if (len(string) = 3) then
    string = string & "xx"
  end if
end if
Avatar billede webbe Nybegynder
15. april 2002 - 11:03 #18
Har lavet følgende kode, som virker på en Access DB, men ikke på den Oracle DB det skal afvikles på:

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "AXAPTA"

sql = "SELECT * FROM MW_RM_ClubRelations WHERE Len(AccountNum)=4"
Set rs = Connect.Execute(sql)

do while not (rs.bof or rs.eof)
    new_account = "1"&rs("AccountNum")
    updSQL = "UPDATE MW_RM_ClubRelations SET AccountNum='"&new_account&"' WHERE ClubId="&rs("ClubId")
    Response.Write updSQL & "<br>"
    'Connect.Execute(updSQL)
    rs.movenext
loop

Får nemlig følgende fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Oracle][ODBC][Ora]ORA-12638: Hentning af ID-oplysninger mislykkedes

/axapta/checkAccount.asp, line 3
Avatar billede webbe Nybegynder
16. april 2002 - 10:21 #19
Problemet er løst og dit script fungerer perfekt...har dog ændret lidt i det....men tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester