Autor
|
Thema: Rechnen mit Variablen mit führenden Nullen (511 mal gelesen)
|
Hohlräumer Mitglied Fertigungsmittelkonstrukteur
Beiträge: 35 Registriert: 26.04.2008 Win XP CATIA V5 R19 VB 2010 Express
|
erstellt am: 27. Mrz. 2009 15:34 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, Die Frage paßt hier wahrscheinlich nicht ganz rein, aber ich weiß sonst nicht wo ich diese Frage stellen sollte, also bitte um Rücksicht. Ich lese die Sachnummern von einzelnen Bauteilen aus und falls diese spiegelbildlich sind erhöhe ich die Sachnummer um den Wert 1. (linke Seite immer ungerade rechts immer gerade). Das klappt soweit auch ganz gut. Leider hab ich nun das Problem bei Sachnummern mit führenden Nullen. Da macht er antselle von 001 -> 002, 001 -> 402 Hier mal der Teilcode: v_Name = Left(oSelNS.partNumber, 7) 'hier wird aus einer Selection die Sachnummer ausgelesen v_Name1 = Left(v_Name, 4) 'hier wird die Sachnummer gesplittet v_Name2 = Mid(v_Name, 5, 3) 'hier wird die Sachnummer gesplittet tempr = v_Name Mid(tempr, 5) = Right(CStr(CInt(Mid(v_Name, 5, 3)) + 1), 3) 'hier wird die rechte Sachnummer erzeugt, funktioniert solange keine führenden Nullen vorhanden sind gibt es eine Möglichkeit daß er die Nullen berücksichtigt? für jede Hilfe bin ich dankbar Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 27. Mrz. 2009 18:29 <-- editieren / zitieren --> Unities abgeben: Nur für Hohlräumer
Hallo Hohlräumer, anbei ein anderer Ansatz:
Code: dim strTemp as string strTemp="001" 'Variablenwert, die inkrementiert werden solldim intTemp as integer dim intNew as integer dim strNew as string if IsNumeric(strTemp) then intTemp=cint(strTemp) intNew=intTemp+1 'funktioniert in VBA strNew=Format(intNew,"000") 'Formatierung einer Zahl, string wird immer mindestens 3 Zeichen lang 'in CATScript/VBScript wäre es wahrscheinlich FormatNumber, da kenne ich aber die Syntax nicht else 'strTemp is keine Zahl end if 'ab hier hast du dann in strNew deine neue Zahl und kannst weiterarbeiten.
Gruß, ZoltanEine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hohlräumer Mitglied Fertigungsmittelkonstrukteur
Beiträge: 35 Registriert: 26.04.2008 Win XP CATIA V5 R19 VB 2010 Express
|
erstellt am: 27. Mrz. 2009 20:42 <-- editieren / zitieren --> Unities abgeben:
|
Thomas Harmening Ehrenmitglied V.I.P. h.c. Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 NX 10 Win 7
|
erstellt am: 27. Mrz. 2009 22:35 <-- editieren / zitieren --> Unities abgeben: Nur für Hohlräumer
ich addiere bei sowas immer eine 1000er oder so dazu, das dann wieder abgezogen wird Die Zahl 123450001 +1000, den Split der letzten 4 Ziffern, addieren von +1, Zahl wieder zusammen bauen und 1000 abziehen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hohlräumer Mitglied Fertigungsmittelkonstrukteur
Beiträge: 35 Registriert: 26.04.2008 Win XP CATIA V5 R19 VB 2010 Express
|
erstellt am: 28. Mrz. 2009 16:13 <-- editieren / zitieren --> Unities abgeben:
Behält er dann die führenden nullen? wenn ich jetzt zum beispiel die Nummer 1234001 hab, addiere ich dann 100 und trenne die etzten 3 Ziffern ab, dann bekomme ich ja 101. 1 dazu macht ja dann 102 und 100 wieder abziehen hätte ich ja dann 2, aber ich benötige ja die 002. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Ehrenmitglied V.I.P. h.c. Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 NX 10 Win 7
|
erstellt am: 30. Mrz. 2009 04:20 <-- editieren / zitieren --> Unities abgeben: Nur für Hohlräumer
wenn du die Subtraktion noch innerhalb des Splits vollziehst, dann kommt 2 heraus. Mein Vorschlag war nur ein Tipp wie es möglicherweise auch gehen würde ohne den String mit einem ZahlenFormat zu belegen. Aber wenn bei dir bei 001 -> 002, 001 -> 402 macht, was hindert dich daran den Split anders zu definieren? Bzw: Wenn die Sachnummer X040001 lautet, nur die Zahlen extrahieren, dabei führende Nullen beachten ,) oder Mid(tempr, 5) = Format(Right(CStr(CInt(Mid(v_Name, 5, 3)) + 1), 3), "000") verwenden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Entwicklungsingenieur Medizintechnik (w/m/d) | CeramTec ist ein führender Entwickler und global aktiver Hersteller und Lieferant von Speziallösungen aus Hochleistungskeramik mit mehr als 3.400 Mitarbeitern. Unsere Lösungen sind weltweit im Fahrzeug- und Maschinenbau, in der Medizintechnik, der Elektronik, der Luft- und Raumfahrttechnik und der Energie- und Umwelttechnik im Einsatz. Willkommen bei den Keramik-Experten. Für ... | Anzeige ansehen | Medizintechnik |
|
Hohlräumer Mitglied Fertigungsmittelkonstrukteur
Beiträge: 35 Registriert: 26.04.2008 Win XP CATIA V5 R19 VB 2010 Express
|
erstellt am: 30. Mrz. 2009 07:49 <-- editieren / zitieren --> Unities abgeben:
|