devotionMedlem sedan jan. 20013 582 inläggdet finns faktiskt sådana här också:
8554926
Sedan förstår jag inte riktigt vad du menar:
I din kod skall detta fält uppdateras med dagens datum - eller hur?
Det jag vill göra är att söka av fält <artName> om där finns ett sjusiffrigt nummer, finns det det vill jag kopiera det till fältet <artNr>. Jag vill göra det på alla rader i tabellen!
Mvh
Henrik
devotionMedlem sedan jan. 20013 582 inläggDå hittas 126 rader som alla innehåller ett sjusiffrigt nummer
Edit/
Fast den hittar även:
Mat. ordnr. 26111340
Mat ordnr 26144985
MOD VINKL 2x8 KAT5E UTP TREND 510329300
MODULARJACK 1X8 KAT5E UTP 306510005
:(
Mvh
Henrik
PPeter SMedlem sedan dec. 20025 483 inlägg
devotion skrev:
Sedan förstår jag inte riktigt vad du menar
Du sätter modified = "dagens datum", bl.a. (jag var litet otydlig).
devotion skrev:
Det jag vill göra är att söka av fält <artName> om där finns ett sjusiffrigt nummer, finns det det vill jag kopiera det till fältet <artNr>. Jag vill göra det på alla rader i tabellen!
Just det!
sSQL = "update tblMaterial" &_
" set modified = "& today &"" &_
" , artNr = case when artName like '%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%'" &_
" then substring(artName,patindex('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%',artName),7)" &_
" when artName like '%[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'" &_
" then substring(artName,patindex('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9]%',artName),7)" &_
" end" &_
" where artName like '%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%'" &_
" or artName like '%[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'"
PPeter SMedlem sedan dec. 20025 483 inlägg
devotion skrev:
Då hittas 126 rader som alla innehåller ett sjusiffrigt nummer
Edit/
Fast den hittar även:
Mat. ordnr. 26111340
Mat ordnr 26144985
MOD VINKL 2x8 KAT5E UTP TREND 510329300
MODULARJACK 1X8 KAT5E UTP 306510005
:(
Mvh
Henrik
Ja, det är ju meningen ;)
devotionMedlem sedan jan. 20013 582 inläggnää... Det får endast finnas 7 siffror... inte 8 inte 9 inte 10 bara 7!
Mvh
Henrik
PPeter SMedlem sedan dec. 20025 483 inlägg Sorry, jag läste litet för snabbt :r
Vi måste givetvis ta samtliga fall i beaktning:
sSQL = "update tblMaterial" &_
" set modified = "& today &"" &_
" , artNr = case when artName like '%[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%'" &_
" then substring(artName,patindex('%[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%',artName),7)" &_
" when artName like '%[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'" &_
" then substring(artName,patindex('%[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%',artName),7)" &_
" end" &_
" where artName like '%[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%'" &_
" or artName like '%[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'" &_
[red]" or artName like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%'" &_
" or artName like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'"[/red]
Lägg sedan till motsvarande fall i case-satsen.
PPeter SMedlem sedan dec. 20025 483 inlägg Se hur jag gjort i case-satsen med två av fallen i where-satsen. Lägg till de sista två (rödmarkerat).
devotionMedlem sedan jan. 20013 582 inläggSå här:
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = Application("sConn")
objConn.Open
today = date()
sSQL = "update tblMaterial" &_
" set modified = "& today &"" &_
" , artNr = case when artName like '%[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%'" &_
" then substring(artName,patindex('%[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%',artName),7)" &_
" when artName like '%[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'" &_
" then substring(artName,patindex('%[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%',artName),7)" &_
" when artName like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%'" &_
" then substring(artName,patindex('[0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%',artName),7)" &_
" when artName like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'" &_
" then substring(artName,patindex('[0-9][0-9][0-9][0-9][0-9][0-9][0-9]',artName),7)" &_
" end" &_
" where artName like '%[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%'" &_
" or artName like '%[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'" &_
" or artName like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%'" &_
" or artName like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'"
objConn.execute sSQL,,128
'get and log rows not having modified = @today
sSQL = "select <fields of interest>" &_
" from tblMaterial" &_
" where modified <> " & today
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open sSQL, objConn, 3, 1
Do until ObjRS.EOF
' do logging
objRS.Movenext
Loop
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
devotionMedlem sedan jan. 20013 582 inläggok.. vågar jag köra den innann jag går och lägger mig.... ;)
PPeter SMedlem sedan dec. 20025 483 inlägg Sannolikt inte. Mardrömsrisken finns ju. Jag röstar för Mr. Blund.
PPeter SMedlem sedan dec. 20025 483 inlägg Förresten, du kan nog skippa case-satsen:
sSQL = "update tblMaterial" &_
" set modified = "& today &"" &_
" , artNr = substring(artName,patindex('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9]%',artName),7)" &_
" where artName like '%[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%'" &_
" or artName like '%[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'" &_
" or artName like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%'" &_
" or artName like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'"
PPeter SMedlem sedan dec. 20025 483 inlägg Kör på mitt senaste förslag, jag ser nu att det tidigare innehåller några fel i patindex() (dags för mig att lägga ned nu...).
devotionMedlem sedan jan. 20013 582 inläggDet blir ändå inte rätt...
Det blir fel datum och ibland bara 6 siffror ibland står det ett E med..
PPeter SMedlem sedan dec. 20025 483 inlägg Ang. datum: 1) sätt apostrofer kring dem, 2) använder du getdate() direkt i SQL-satsen (som i ditt tidiga inlägg) finns möjligheten att olika datum används i de två frågorna. Detta kan undvikas genom att först spara undan det aktuella datumet i en variabel.
Använder du mitt senaste förslag? Kan du visa ett exempel där det blir fel?
devotionMedlem sedan jan. 20013 582 inläggHej! :)
Löste det faktiskt med detta:
<%
function searchArticle(art)
dim re
set re = new regexp
re.pattern = "(\d{7})(\d*)?"
set m = re.execute(art)
if m.count then
if len(m(0).submatches(1)) < 1 then
searchArticle = m(0).submatches(0)
exit function
end if
end if
searchArticle = ""
end function
' Öppna databasen
' ***************
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = Application("sConn")
objConn.Open
sSQL = "SELECT [Id], [ArtName] FROM tblMaterial"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open sSQL, objConn, 3, 1
Do until ObjRS.EOF
sArticleName = objRS("ArtName")
iId = cInt(objRS("Id"))
dim s
s = searchArticle(sArticleName)
if len(s) > 0 then
sEnumber = s
sSQL = "UPDATE tblmaterial SET Modified = getdate(), ArtNr = '" & sEnumber & "' Where [Id] = " & iId
objConn.Execute sSQL,, 128
else
sSQL = "INSERT INTO tblUpdateMaterial ([Id], ArtName) VALUES (" & iId & ", '" & sArticleName & "')"
objConn.Execute sSQL,,128
end if
objRS.Movenext
Loop
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
Response.write "Klart!"
%>
Fungerade finfint!
Tack för hjälpen Peter S :)
Mvh
Henrik