Cze wszystkim
Szukam polecenia, które można użyć w makrze SolidWorks, aby sprawdzić w przechowalni PDM (EPDM), czy nazwa pliku, którą automatycznie generuję, jest unikalna, czy nie.
Udaje mi się to sprawdzić za pomocą poniższego kodu:
Sub CheckFileNameUnique()
Ustaw PDMVault = ConnectToVault("MojaNazwaSkarbca")
Jeśli PDMVault.IsLoggedIn = True, to
Debug.Print "Już zalogowany"
Inaczej
Zakończ jeżeli:
Ustaw wyszukiwanie = PDMVault.CreateSearch()
Ustaw SearchResult = Search.GetFirstResult
while not SearchResult.Name = "033244.SLDPRT"
Debug.Print SearchResult.Name
Ustaw SearchResult = Search.GetNextResult()
Wend
Debug.Print "Znaleziono!! "
Koniec subwoofera
Ale czas przetwarzania jest zbyt długi. Chciałbym mieć taki sam czas odpowiedzi, jak w przypadku rozpoczęcia archiwizacji, gdy nazwa pliku nie jest unikalna; W tym przypadku kontrola jest natychmiastowa! W związku z tym powinno być możliwe zrobienie tego za pomocą makra...
Jeśli masz rozwiązanie, które możesz mi zasugerować, z góry dziękuję.
Witam
W vba, o ile się nie mylę, nie da się tego kontrolować. O ile mi wiadomo, jest to bardziej zachowanie dodatku, który byłby zakodowany w C# lub VB.Net który może uzyskać dostęp do wewnętrznych funkcji PdmWorks.
W końcu, jeśli nie w sposób robienia rzeczy (co jest już dawno od uruchomienia skanowania całej bazy danych, a następnie jej analizy), myślę, że lepiej jest rozpocząć wyszukiwanie danego odniesienia jako kryterium. Czas przetwarzania będzie prawdopodobnie lepszy.
Ustaw folder = skarbiec. GetFolderFromPath("... ") 'wypełnij katalog główny repozytorium Search.StartFolderID = folder.ID
Search.FindFolders = Fałsz
Search.Filename="033244.SLDPRT"
Następnie zastosuj zabieg, jeśli zostanie znaleziony lub nie.
1 polubienie
Dlaczego warto korzystać z makra VBA?
U nas SAFE przeprowadza automatyczną kontrolę. Nie możemy zarchiwizować dwóch plików o tej samej nazwie. Musisz sprawdzić ustawienia bagażnika.
Edit: Mamy taki post:

2 polubienia
@ KVuilleumier, zadałem sobie to samo pytanie, ale myślę, że musi to być po to, żebym nie musiał zmieniać swojego imienia i nazwiska po próbie jego zarchiwizowania. Ale jeśli nie, tak, po prostu zabroń duplikatów.
Dziękuję za odpowiedzi i uwagi.
W rzeczywistości pracuję nad makrem, które zamierzamy uruchomić w zestawie przed uruchomieniem w środowisku produkcyjnym.
Celem jest, aby dla każdej części i podzespołu użytego w przetwarzanym zespole automatycznie pobrać numery artykułów i inne informacje z ERP i wykorzystać je do wygenerowania nazwy nowego pliku utworzonego za pomocą opcji "zapisz jako".
Dlatego chcę w tej chwili sprawdzić, czy automatycznie wygenerowana nazwa jest unikalna, czy nie. Jeśli poczekasz, aż użytkownik zaewidencjonuje zestaw, aby zauważyć, że niektóre nazwy nie są unikatowe. Będzie musiał wyświetlić listę tych plików, utworzyć nowe "zapisz jako", ale ręcznie i ponownie uruchomić makro.
Zamierzam wypróbować propozycję Cyryla.
Cyryl.f,
Przykro mi, ale nie widzę, jak sprawdzić, czy nazwa pliku została znaleziona, czy nie.
Czy powinniśmy dodać coś po Search.Filename = "033244.SLDPRT"?
Ustaw SearchResult = Search.GetFirstResult
Jeśli SearchResult to nic, .....
1 polubienie
Działa wspaniale z niemal natychmiastowym czasem reakcji!
Dziękuję bardzo.