Autor Thema: Array füllen  (Gelesen 1716 mal)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Array füllen
« am: 29.08.02 - 07:27:47 »
@All,

wie fülle ich am schnellsten in script ein Array mit den Buchstaben a - z ??

eknori
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Array füllen
« Antwort #1 am: 29.08.02 - 07:49:48 »
hier meine Lösung:

     Dim CharArray As Variant
     ImplodedStr$ = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"
     StrDelimiter$ = ","
     CharArray = Evaluate(|@Explode("| & ImplodedStr$ & |";"| & StrDelimiter$ & |")|)

eknori
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Silke

  • Senior Mitglied
  • ****
  • Beiträge: 463
  • Geschlecht: Weiblich
  • Carpe Diem
Re: Array füllen
« Antwort #2 am: 29.08.02 - 08:41:15 »
Hört sich jetzt vielleicht ein wenig blöd an :

aber wo mus der Code (KOT  ;D) hin :-/
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Silke 8)

1. Mitglied der 1. DAU Selbsthilfegruppe :D

Support für Alles und Jeden

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Array füllen
« Antwort #3 am: 29.08.02 - 09:07:31 »
@Silke:

Also die Aufgabenstellung sieht wie folgt aus:

In einer Datenbank sollen Dokumente erstellt werden. Dabei gibt es zwei möglichkeiten. Es wird ein neues Dokument erstellt. Dieses neue Dokument erhält eine fortlaufenden Nummer. Diese Nummer wird über die Formel

REM "first doc number";
tempPRText := 1;
tempPRNumber := tempPRText;

REM "all docs after the first and add 1 to increase counter";
tempText:=@Subset(@DbColumn("" : "NoCache"; ""; "($TAEDNR)"; 1); 1);
temp := tempText;
tmpVal:=@If(temp != ""; @Text(@TextToNumber(temp) + 1); @Text(tempPRNumber));
Padded := @Right( "00000000" + tmpVal; 4);
Padded +"_"+@Text(@Year(@Now))

ermittelt.

Möglichkeit 2:

es existiert z.B. ein Dokument mit der Nummer

0005_2002

Wenn der User nun die 2. Möglichkeit wählt ( zu bestehendem Dokument hinzufügen ), soll automatisch an die bereits existierende Nummer in dem neuen (leeren) Dokument ein Buchstabe angehängt werden

also: 0005_2002a

Existieren zu einem RootDocument bereits Unterdokumente, soll der Buchstabe basierend auf den bereits vorhandenen Buchstaben fortlaufend vergeben werden.

hier mein Script, welches dir auch deine Frage beantwortet.

Sub Click(Source As Button)
     Dim s As New NotesSession
     Dim db As NotesDatabase
     Dim col As NotesDocumentCollection
     Dim col1 As NotesDocumentCollection      
     Dim doc As NotesDocument
     Dim item As NotesItem      
     Dim ws As New NotesUIWorkspace
     Dim selection As String
     Dim CharArray As Variant
     
     ImplodedStr$ = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"
     StrDelimiter$ = ","
     CharArray = Evaluate(|@Explode("| & ImplodedStr$ & |";"| & StrDelimiter$ & |")|)
     
     Set db = s.currentdatabase
     Set col = db.UnprocessedDocuments
     
     If col.count > 1 Then
           Msgbox " es kann nur ein Dokument gleichzeitig bearbeitet werden"
     Else
           Set doc = col.GetFirstDocument()
           Set item = doc.GetFirstItem( "TAEDNR" )
           
           dummy$ = item.text
           
           If Isnumeric (replaceSubstring(dummy$,"_","")) Then
                 tmp$ = sword(dummy$,"_",1)
                 selection = "SELECT (@Contains(TAEDNR;" & Chr(34) & tmp$  & Chr(34) & "))"
                 Set col1 = db.Search( selection, Nothing ,0 )
                 Set newDoc = db.CreateDocument
                 dummy$ = dummy$ + CharArray(Col1.count - 1)                  
                 Set item = newDoc.ReplaceItemValue("TAEDNR",dummy$)
                 ws.EditDocument True,newDoc
           Else
                 Msgbox "geht nicht !!"
           End If
           
     End If
End Sub

Das Script verwendet noch 2 Unterroutinen

Function ReplaceSubstring(sSource As String, sFrom As String, sTo As String) As String
     
     Dim sResult As String
     Dim i As Integer, iLenFrom As Integer, iLenRslt As Integer
     i=0
     iLenFrom=Len(sFrom)
     sResult=sSource
     
     Do While(i < Len(sResult))
           i=i+1
           If Mid$(sResult, i, iLenFrom ) = sFrom Then
                 iLenRslt=Len(sResult)
                 sResult=Left$(sResult, (i-1)) + sTo + Right$(sResult, iLenRslt - ( (i-1) + ( iLenFrom ) ) )
           End If
     Loop
     
     ReplaceSubstring=sResult
End Function

und

Function sWord ( sourceString As String, separator As String, number As Integer ) As String
     searchString$=SourceString & separator ' add one separator to catch also the last substring
     For i% = 1 To number
           pos%=Instr(searchString$, separator)
           If pos%=0 Then Exit For
           substring$=Left(searchString$,pos%-1)
           searchString$=Mid(searchString$, pos%+1)
     Next
     If pos% > 0 Then
           sWord=substring$
     Else
           sWord=""
     End If
End Function

Das Ganze funktioniert super; es fehlen noch die DAU spezifischen Fehlertexte.

Das "Problem" ist damit gelöst; wollte nur mal wissen, ob jemand noch eine bessere Lösung hat.

eknori
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Silke

  • Senior Mitglied
  • ****
  • Beiträge: 463
  • Geschlecht: Weiblich
  • Carpe Diem
Re: Array füllen
« Antwort #4 am: 29.08.02 - 09:17:07 »
Aha   supe :Dr kann man gut bei Vertragsdokumenten benutzen, Änderung abcde... ;)
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Silke 8)

1. Mitglied der 1. DAU Selbsthilfegruppe :D

Support für Alles und Jeden

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz