hi,
ne es kann plötzlich kommen, dann muss ich ein SydowAdresse eintragen bei dem Debitor.
Thomas
hi,
ne es kann plötzlich kommen, dann muss ich ein SydowAdresse eintragen bei dem Debitor.
Thomas
hi,
ja das war ja nur ein Versuch. ich habe es so gemacht dann kommt 1 raus
[autoit]While 1
$debi = "******"
$text = WinGetText("Microsoft Business Solutions-Navision","In Debitor D10035 fehlt die E-Mail-Adresse")
If Not WinActivate($text) Then
WinWaitClose("Microsoft Business Solutions-Navision","Drucke...")
Else
MsgBox(0,"",StringRegExp($text, "(?i)Debitor(.*?)(?i)fehlt",1) )
ExitLoop
EndIf
WEnd
was ich noch nicht geschaft habe ist das die Nummer D10035 als Variable funzt und dementsprechend ausgegeben wird.
thomas
hi,
leider hast du nicht richtig gelesen. dieser Teil funzt. erweitere den Teil
[autoit]$text =("In Debitor D10000 fehlt die E-Mail-Adresse")
[/autoit]um
[autoit]$text =WinGetTExt("In Debitor D10000 fehlt die E-Mail-Adresse")
[/autoit]und schaue was bei dir geschieht.
Nach langem üben kommt bei mir momentan 1 raus.
mfg Thomas
hi Bernd,
ok geändert wird jetzt erkannt. Leider aber nicht mit dem Erfolg den ich erhoft habe.
Ich habe diesen Teil zum Testen der alles ordentlich zurück gibt.
#include <String.au3>
#include <array.au3>
$text =("In Debitor D10000 fehlt die E-Mail-Adresse"); die quelle $text ist der ist-zustand, also kein anderer input vorhanden
$array = StringRegExp($text, "(?i)Debitor(.*?)(?i)fehlt",1)
ConsoleWrite($array & @CRLF)
MsgBox(64,"",$array[0])
Wenn ich $text um WingetText erweitere bekomme ich einen Fehler.
C:\Programme\AutoIt3\Include\Strinregexp.au3 (7) : ==> Subscript used with non-Array variable.:
MsgBox(64,"",$array[0])
MsgBox(64,"",$array^ ERROR
Das gleiche geschieht auch in meinem Code. liegt hier ein Fehler?
Thomas
hi,
irgendwie will es mit dem WinGetText nicht klappen. Es wird die MSGBOX bei der Aktivierung nicht erkannt. Ich habe es in meinem Script so eingebaut, das es in einer Schleife liegt, da ich nicht weiß ob diese MSGBOX aitiviert wird. Auch weiß ich nicht bei welchem Debitor.
#include <String.au3>
Opt("TrayIconDebug", 1)
Opt("WinTitleMatchMode", 2)
Opt("WinSearchChildren", 1)
Opt("WinSearchChildren", 1)
Opt("WinDetectHiddenText", 1)
Opt("WinTextMatchMode", 2)
$navision = @ProgramFilesDir & "\Microsoft Business Solutions-Navision\Client\fin.exe"
Run($navision)
WinWaitActive('Anmelden')
Sleep(1000)
Send('tester{ENTER}')
Sleep(500)
Send('test{ENTER}{ENTER}')
Sleep(2500)
Send("!xd"); Aufruf Objektdesinger
Sleep(900)
Send("!p")
Send("{Home}")
Sleep(2000)
Send("{Right}")
Send("{F7}")
Sleep(2000)
Send("50032")
Send("{Enter}")
Sleep(500)
Send("!r")
Send("{Enter}")
Sleep(5000)
Send("{UP 3}")
SleeP(5000)
;Send(StringFormat("%02d", @MON - 1)& " / " & @YEAR);wandelt das Datum, damit die Null erhalten bleibt
Sleep(5000)
Send("{Enter 2}")
Sleep(5000)
;Send($string[$i])
Sleep(5000)
Send("{Enter}")
Send("{Enter}")
Sleep(5000)
Send("{Space}")
Send("!u")
Sleep(5000)
send("{TAB 7}{Enter}")
If FileExists("C:\Thomas\EVN\bat\NaviDruckBLAT.BAT")Then
Send("{Down}{Space}")
sleep(500)
Send("{Enter}")
Else
Send("{Enter}")
EndIf
While 1
$debi = "D*"
$text = WinGetText("Microsoft Business Solutions-Navision","In Debitor "& $debi & "fehlt die E-")
If WinActivate ($text) Then
$suchbegriff = _StringBetween($text, 'Debitor ', ' fehlt', 1)
If IsArray($suchbegriff) Then MsgBox(0, 'gefunden', $text)
EndIf
WEnd
WinWaitClose("Microsoft Business Solutions-Navision","Drucke...")
Habe mal den gesamten Code eingestellt. Wo liegt mein Fehler?
MFg Thomas
hi,
kleine ursache große wirkung ok es geht danke euch beiden.
thomas
hi ,
nicht ganz.was ich erreichen will ist das wenn heute (14.07.07) dann letzte Tag des Juni (30.06.07) das geht ja. was nicht funzt ist wenn heute(ein tag im januar) dann der letzte tag des dezember des vorjahres. dann gibt meine func 00.00.2006 aus. das würde ich gerne korrigieren.
Bei deiner func wird wenn ich das richtig gesehen habe im der 31.12.2006 ausgegeben.
mfg thomas
hi,
habe da ein kleines Problem mit dem letzten des Monats. Es läuft soweit aber zur Ausgabe des 31.12 des Vorjahres kommt 00.00.Vorjahr. Woran kann es liegen?
#include <Date.au3>
#include <String.au3>
If @Mon = 1 Then
$iDays = _DateDaysInMonth( @YEAR - 1, StringFormat("%02d", @MON -1 ) )
$sNewDate = $iDays & "." & StringFormat("%02d", @MON -1) & "." & @YEAR -1
MsgBox( 4096, "Then", "Datum: " & $sNewDate )
Else
$iDays = _DateDaysInMonth( @YEAR ,StringFormat("%02d", @MON - 1) )
$sNewDate = $iDays & "." & StringFormat("%02d", @MON - 1 ) & "." & @YEAR
MsgBox( 4096, "Else", "Datum: " & $sNewDate )
EndIf
Mfg
Thomas
hi,
mit WInGetText kann ich es mir micht vorstellen, da der D* Wert immer ein anderer sein kann. Diesen D* Wert benötige ich dann ja. AutoIT Windows Info gibt das im Anhang befindliche aus.
Mfg Thomas
Hallo,
gibt es eine Möglichkeit MSGBOX's in einem von Autoit gesteuerte Programm auszulesen? Im Anhang ist die MSGBOX die kommt, wenn bei einem Debitor die Mailadresse fehlt. Ich benötige den Teil mit der D* beginnent, um dann dort eine Hilfsmailadresse einzutragen.
MFG Thomas
Hi,
ich wollte auch mal danke zu dem tollen Tool sagen und auch eine Fehlermeldung zeigen mit der ich nicht anfangen kann. Auch kann ich danach nichts mehr machen.
Thomas
hi
eventuell so
#include <GUIConstants.au3>
#include <INet.au3>
ShellExecute("Outlook")
WinWaitActive("Posteingang - Microsoft Outlook")
;Simulation neue E_mail erstellen
Sleep(500)
Send("!d")
Send("n")
Send("m")
Sleep(500)
;E-Mail Empfänger Eingabe
GUICreate("E-Mail Empfänger", 250, 100)
GUICtrlCreateLabel("Adresse:", 30, 30)
$input = GUICtrlCreateInput("", 90, 25, 100)
$btn = GUICtrlCreateButton("OK", 100, 60, 60)
GUISetState()
$msg = 0
While $msg <> $GUI_EVENT_CLOSE
$msg = GUIGetMsg()
Select
Case $msg = $btn
ExitLoop
EndSelect
WEnd
$adress= GUICtrlRead($input)
$subject = "Test"
$body = ""
_INetMail($adress, $subject,$body)
Thomas
hi,
vielleicht hilfe das
#include <inet.au3>
#include <Date.au3>
$PID = ProcessExists("Outlook.exe")
$Outlook2003 = @ProgramFilesDir & "\Microsoft Office\Office11\Outlook.exe"
$Ti = @HOUR & ":" & @MIN & ":" & @SEC
$Address= ("xxx@xxx.de")
$Subject= ("Tägliche Datensicherung vom " & _NowDate())
;
$Body = ("Die Tägliche Datensicherung wurde um " & $Ti & " erfolgreich erstellt." & @LF & @LF & _
"Im Pfad wurden folgende Dateien angelegt:" & @LF & _
"Die Laufzeiten der einzelnen Scripte betrugen:" & @LF & @LF & @LF & _
"Die folgenden Dateien führten zu einem Einlesefehler: " & @LF & @LF &@LF & @LF & _
"und/oder" & @LF & _
"Die folgenden Dateien führten zu einem Einlesefehler: " & @LF & @LF & @LF & @LF & _
"Freundliche Grüße" & @LF & @LF & " Administrator")
;==> Ertsellung des E-Mail Body für Misserfolg
If $PID Then
_INetMail($address, $subject, $Body)
Sleep(5000)
Send("!s")
Else
Run($Outlook2003)
WinWaitActive("Posteingang - Microsoft Outlook")
_INetMail($address, $subject, $Body)
Sleep(5000)
Send("!s")
Sleep(1500)
Send("!{F4}")
EndIf
Mfg
Thomas
hi,
danke Ziel erkannt un umgesetzt. Ich hoffe es läuft.
ThomasB
hi BErnd
kannst du mir das etwas näher erklären ich habe mit dem StringSplit noch nicht geabeitet.
[autoit]StringInStr($frta[2], $split[6])
[/autoit]Ist das so richtig? Ich benötig nur das erste Datum um den Zeitpunkt (Daten kommen täglich) zu erhalten wann ein neues Datum kommt,
Thomas
hi,
ich muss das Thema nochmals aufgreifen.Irgendwie will es nicht mehr so wie ich es mal wollte.
Das sind die zweiten Zeile aus verschiedene Dateien die ich auslesen und nach dem dort drin enthaltenem Datum verschieben möchte.
K;380;D--01/9005676256;9;20070622;20070701;20070731;31;...
K;380;D--01/9005547731;9;20070601;20070601;20070630;31....
Hier mein Ansatz
#include <File.au3>
#include <date.au3>
#include <array.au3>
#include <string.au3>
Opt("TrayIconDebug", 1) ;0=no info, 1=debug line info
;
Global $pathMain = "C:\GLI_PROD\Mapping\EDI_Eingang\" & @MDAY & "." & @MON & "." & @YEAR & "_test" & ".txt"
Global $pathMain1 = "C:\GLI_PROD\Mapping\EDI_Eingang\" & @MDAY & "." & @MON & "." & @YEAR & "_o" & ".txt"
Dim $pfad = "C:\GLI_PROD\Mapping\EDI_Eingang\"
Dim $string = _FileListToArray($pfad, "*.INH";) ; liest alle *.INH-Files in Array $string
Dim $match, $frta
Dim $arErgebnis[1]
Dim $arErgebnis1[1]
;Dim $pathMain
$var = @YEAR & @MON
$time = StringFormat("%02d", @YEAR & @MON, 0)
If Not IsArray($string) Then
MsgBox(16, "", "Keine Inhouse Datei(en) gefunden.. EXIT!";)
Exit
EndIf
;
For $i = 1 To $string[0] ; Dateiliste abarbeiten
_FileReadToArray($pfad & $string[$i], $frta)
If @error <> 0 Then
MsgBox(4096, "Error", " Fehler beim Einlesen der Datei: " & $pfad & $string[$i] & @LF & "Fehler: " & @error)
Else
$match = _StringBetween($frta[2], "/", ";";) ; Wert in Zeile 2 auslesen
If Not @error Then
If StringInStr($frta[1], "ER2529";) And StringInStr($frta[2], "K;380";) And StringInStr($frta[2], $var, 34) Then
MsgBox(4096, "", "vorhanden bei datei: " & $string[$i] & " " & $match[0], 20)
Else
MsgBox(64, "", $string[$i] & " " & $match[0] & " anderes Datum", 10)
;_ArrayAdd($arErgebnis, "Datei: " & $string[$i] & " mit RE.-Nr.: " & $match[0])
Sleep(1500)
EndIf
_FileWriteFromArray($pathMain, $arErgebnis, 1)
Else
MsgBox(4096, "", "In Datei: " & $string[$i] & " ist Nummer nicht enthalten.";)
EndIf
Der normale Teile geht. Aber wenn auf das Datum geschaut wird geht es nicht. Wo liegt mein Fehler?
MFG Thomas
hi,
danke Bernd das funzt super
:keks:
mfg Thomas
hi,
das ist egal ambesten ist es wenn ich den tiefsten wert und den höchsten wert habe, da die Daten schon sortiert kommen. Deshalb habe ich auch mit min und max getestet. Leider war aber bei meinn Test der min Wert leer. Ich weiß nicht warum.
thomas
Hi,
habe alles in ein neues Array eingelesen und mit Arrymin und max versucht. Leider bleibt min leer max wird richtig angezeigt.
_FileReadToArray($Txt2, $Txt4)
_ArrayDisplay( $Txt4, "_ArrayDisplay() Test" )
MsgBox(0,'Min Numeric value',_ArrayMin( $Txt4,1,1)&".." &_ArrayMax( $Txt4,1,1))
MFG
Thomas
hi,
kannst du bitte nochmal eine kurze Hilfe geben?
Thomas