webForumDet fria alternativet

Söka ut artikelnummer ur sträng

ASP

16 svar · 963 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

:e
Hej!

Om jag har en sträng som ser ut så här:
Paxfläkt 230V 50Hz E1223568

Hur gör jag då för att få ut:

1223568

Och om det står:
4587956 apparatdosa enkelgips

få ut:
4587956

eller:
1234 Handukstork 230 Volt E4596356

Få ut
4596356

Dvs, identifiera ett sjusiffrigt artikelnummer ur en sträng oavsett vilka andra tecken strängen består av!

Mvh
Henrik

Medlem sedan dec. 20025 483 inlägg
#2
dim re
set re = new regexp
re.pattern = "\d{7}"

dim m
set m = re.execute("4587956 apparatdosa enkelgips")

if m.count then
  response.write m(0)
end if

set re = nothing
Medlem sedan jan. 20013 582 inlägg
#3

Wee, det var snabba puckar...

Behöver väl inte säga att jag ska testa först, det brukar det ju göra när du är i farten...

Tackar!

Väntar dock med att acceptera som slutgiltigt svar tills jag testat... ;)

..men kan du inte förklara lite vad koden gör...

Mvh
Henrik

Medlem sedan dec. 20025 483 inlägg
#4

Givetvis! :)

[b]' Vi vill använda ett reguljärt uttryck för att matcha sju siffror efter varandra[/b]
dim re
set re = new regexp
re.pattern = "\d{7}" [b]' \d är samma sak som 0-9; {7} betyder sju stycken av föregående[/b]

[b]' Med execute() får vi ut en array av träffar
' Eftersom global-flaggan ej är satt, kan vi endast få en träff och den ligger i m(0)[/b]
dim m
set m = re.execute("4587956 apparatdosa enkelgips")

if m.count then
  response.write m(0)
end if

set re = nothing
Medlem sedan mars 20032 667 inlägg
#5

Om det förekommer kombinationer i strängen där flera teckengrupper innehåller sju tecken lär det bli problem, eller? Varför inte öronmärka ett artikelnummer på ett visst sätt?

Medlem sedan jan. 20013 582 inlägg
#6

Hej!

Jo det kanske det blir... men jag anser att sannolikheten att de ska inträffa är liten.

Då får man väl hitta på något som kollar om det finns fler än 1grupp av sju siffror så gör något coolt... Det kanske går???

Mvh
Henrik

Medlem sedan juni 200032 967 inlägg
#7

det finns fler än 1grupp av sju siffror så gör något coolt... Det kanske går???

Borde gå fint om du sätter global-flaggan och kontrollerar om m.count är större än 1.

Edit: lite clipboardskoj :D
Mvh

Medlem sedan dec. 20025 483 inlägg
#8

Om du vill följa K@llens rekommendationer vad gäller öronmärkning, då:

set re = new regexp

re.pattern = "art(\d{7})"

set m = re.execute("art4587956 apparatdosa enkelgips")

if m.count and m(0).submatches.count then
  response.write m(0).submatches(0)
end if

set re = nothing

Ovan har jag antagit att prefixet är art.

Medlem sedan jan. 20013 582 inlägg
#9

:e
Hej!

Vad det hela handlar om är att vi har ett handdatorsystem där våra montörer lägger in material på ett jobb. En hel del artiklar finns i handdatorn, men i bland gör det inte det och då får de skriva manuellt.

När de sedan synkar så lagras allt i en accessdatabas
Min tanke är att göra ett enkelt webbaserat gränssnitt med asp där artiklarna listas och där man kan klicka på "uppdatera" vid en artikel som är inlagd "för hand" Det är då jag behöver söka ut artikelnumret för att göra en sökning i den "stora" artikeldatabsen och om artikeln finns där ersätta den som var "gjord för hand" fattar ni?

Det är väl egentligen inte troligt att det kommer 2 grupper med 7 siffror i en sådan sträng...

Men för att minska riskan kan man ju sätta som villkor att montörerna skall skriva E framför en artikel. (det är ju i elbranchen så där heter det E-nummer istället för artikelnummer)

Det kändes kanske lite lättare att slippa det där med prefix... känns som det är större sannolikhet att det glöms att skrivas prefix än att det skrivs flera grupper med 7 siffror...

Det kan ju tex skrivas E 1234567 eller E1234567 båda är ju rätt men det första har ju ett mellansteg vilket gör att det inte kommaer att funka ...

Vad tycker ni?

Mvh
Henrik

Medlem sedan juli 200012 978 inlägg
#10

Det här tycker jag är en bra tråd. En förklaring att människor inte alltid är så rationella utan vi som programerare skall kunna ta hand om avvikelser på samma sätt som ett personligt öga skulle ha läst av raden. Bra tänkt. Lycka till.

Medlem sedan mars 20032 667 inlägg
#11

devotion skrev:

Det kändes kanske lite lättare att slippa det där med prefix... känns som det är större sannolikhet att det glöms att skrivas prefix än att det skrivs flera grupper med 7 siffror...

Det kan ju tex skrivas E 1234567 eller E1234567 båda är ju rätt men det första har ju ett mellansteg vilket gör att det inte kommaer att funka ...

Vad tycker ni?

Enligt mitt synsätt är validering av indata en bra påfund. Deta ska helt enkelt inte gå att skriva in ett felaktigt E-nummer. Ett E-nummer bör dessutom vara unikt. :)

Medlem sedan jan. 20013 582 inlägg
#12

Hej!
I det här fallet så är handdatorappilkationen och synkningen till accessdatabsen (och även windows applikationen) något som jag inte kan göra något åt. Det jag gör att jag gör ett bättre gränssnitt med en webapplikation.

Så någon validering av indatan på handdatorn kan jag inte åstadkomma. Det montören gör är att skriva in artikeln med "fritext" och kommer han i håg att få med E-numret så är det bra.... ;)

Min tanke är att bara numret kommer med så ska min kod ta hand om valideringen, genom att söka ut artikelnumret och därefter ersätta benämning och enhet med det "riktiga" som finns i den stora databasen på kontoret.

Ett E-nummer är unikt, och standardiserat och används inom elbranchen. därför använder alla grossister det! så en viss Kontakt har samma E-nummer hos alla leverantörer... (nu lever vi ju inte i en ideal värld så givetvis finns det undantag....)

Fler synpunkter mottages tacksamt!

//Henrik

Medlem sedan dec. 20025 483 inlägg
#13

Kan du inte låta dem skriva E-numret utan inledande 'E' (precis som nu) och sedan själv prefixa numret med bokstaven vid mottagandet av datat?

Medlem sedan jan. 20013 582 inlägg
#14

Peter S skrev:

Kan du inte låta dem skriva E-numret utan inledande 'E' (precis som nu) och sedan själv prefixa numret med bokstaven vid mottagandet av datat?

Jo, jag tror det är så jag ska göra...

Man ska inte alltid begära för mycket av användaren.... det räcker med att få ner ett korrekt nummer... :e

Henrik

Medlem sedan apr. 20031 660 inlägg
#15

HEJ!

devotion skrev:

Vad det hela handlar om är att vi har ett handdatorsystem där våra montörer lägger in material på ett jobb. En hel del artiklar finns i handdatorn, men i bland gör det inte det och då får de skriva manuellt.

Vad händer om montören inte kan siffrorna utan endast vad det är för sak? Det känns som det är ännu troligare?

Din beskrivning låter lite som att du skall synkronisera med den stora artikeldatabasen för att få rätt siffror, vilka montören redan fyllt i?

Jag skulle vilja ha en funktion som letar upp E-numret för en artikel, men jag förutsätter att du vet vad du gör!

Medlem sedan jan. 20013 582 inlägg
#16

:e
Hej!

Ingen dum idé alls... vet bara inte hur jag ska göra då...

Man kunde ju göra en sökning på E-numret först och sedan göra en sökning på benämning om det inte gicka att få ut något E-nummer. Problemet är väl då att göra en smart sökfunktion för detta.

Montören kanske inte kan e-numret för ett vägguttag, utan skriver in

"Vägguttag med jord"

En sökning på det skulle ju få många träffar

tex E1830291 är ett sådant
UTTAG 2-VÄGS M.J. INF. P-VIT

Men han kanske menade ett 1-vägs?

För att kunna göra sökningen på "vägguttag med jord" måste strängen delas upp i:
vägg +uttag +med +jord

Denna söksträng kommer att returnera en hel del träffar. Dessa måste väl i så fall visas för användraen i ett steg två där en lista presenteras och användaren kan välja rätt!

Detta känns mycket avancerat, och det kanske är lättare att få montörerna att skriva ner Enumret, som är unikt... Men det är en intressant diskussion, så ni som vill bidra med ideér, tankegångar och tips är välkomna!

Mvh
Henrik

Medlem sedan apr. 20031 660 inlägg
#17

HEJ!

Eftersom det är montörer (på fältet) antar jag att de vet vad sakerna heter, och inte har möjligthet att slå upp E-numret som kontorspersonal har.

Därför borde de ha en lista med alla produkter (gissar blir lång!) som de kan plocka fram alla E-numren ur.
Där ska även finnas ett fritextfält för "ickestandardiserade ord", tex "vägguttag jord" kopplat till "UTTAG 2-VÄGS M.J. INF. P-VIT", vilket ingen som inte är hardcore-elektriker kan veta att uttaget heter.

Finns det sedan bilder också, suveränt!

Jag skulle, som elektriker, vara nöjd med att få en plocklista på vad jag ska använda till jobbet, och det som ändras, skriver jag upp.
Om det sedan är papper eller handdator är en smaksak, det beror på hur efterföljande steg i arbetsgången ser ut.

Som el-konsult skulle jag å andra sidan kunna lista ut exakt allt som ska användas, för ovanstående elektriker, för att få ett pris och en materiallista.

Allt beror på hur ni arbetar, och organisation.
Håller med Lasp att det är en intressant fråga; ska man göra det bra för elektrikern, eller för hela organisationen? Det sistnämnda troligen.

262 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)