Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Έλεγχος εάν υπάρχει ο αριθμός στο text file (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/4009-elegxos-ean-yparxei-o-arithmos-sto-text-file.html)

γιώργοςΚ 19-02-16 23:32

1 Συνημμένο(α)
Γιώργο προσπαθώντας να διαμορφώσω τον κώδικα στα μέτρα μου έπεσα στο συναπτόμενο σφάλμα...

vraxnakisg 20-02-16 10:34

1 Συνημμένο(α)
Καλημέρα Γιώργο,
Θα πρέπει να πας από τον vba editor από το μενού Tools->References και στο παράθυρο διαλόγου που θα ανοίγει να βρεις το Microsoft Scripting Runtime να το τσεκάρεις και να πατήσεις OK και είσαι έτοιμος.

γιώργοςΚ 20-02-16 13:06

Γειά σου Γιώργο μου,

Σε ευχαριστώ φίλε μου, όταν θα πάω στο σπίτι θα το δοκιμάσω και εάν έχω οτιδήποτε θα επανέλθω.

Σε ευχαριστώ πάντως για την βοήθεια και το ενδιαφέρον να βοηθήσεις έναν άσχετο..:plaf:

γιώργοςΚ 24-02-16 20:20

1 Συνημμένο(α)
Καλησπέρα σε όλους και ιδιαιτέρως σε εσένα φίλε Γιώργο,

Προσπαθώ να προσαρμίσω τον κώδικα αυτό έτσι ώστε να παρακάμψω την διαδικασία του Input Box και να παίρνει τιμή απο ένα πεδίο στην φόρμα SKey αλλά κτυπάει ο κώδικας συνεχώς μιας και απο την απειρία μου μάλλον έχω κάνει κάποιο λάθος..

Ο κώδικας οπως τον έχω διαμορφώσει και συνημμένη η φωτο με το σημείο που κτυπά ο κώδιας..

Function findtext(sfile As String) As String
lngLine = 0
nfile = FreeFile
strSearch = Forms!SKey.txtMod1

lngLine = 0
blnFound = False
Open sfile For Random As #nfile
Open sfile For Random As #nfile
Do While Not EOF(nfile)
lngLine = lngLine + 1
Line Input #nfile, strLine
If InStr(1, strLine, strSearch, vbBinaryCompare) > 0 Then
msg = MsgBox("Ο αριθμός :" & strSearch & " βρέθηκε στην γραμμή: " & lngLine & " θελετε να διαγραφεί?", vbQuestion + vbOKCancel)
blnFound = True
If msg = vbOK Then
Call DeleteLinefile(sfile, lngLine)
Close #nfile
Exit Do
End If
End If
Loop
If blnFound = False Then
MsgBox "Ο αριθμός :" & strSearch & " δεν βρέθηκε", vbInformation
End If
Close #nfile
End Function

Θα εκτημήσω ενα χέρι βοήθειας..

vraxnakisg 25-02-16 12:41

2 Συνημμένο(α)
Γεια σου Γιώργο.

Στον κώδικα που έχεις σου χτυπάει λάθος η γραμμή «Open sfile For Random As #nfile» γιατί την έχεις δυο φορές, σβήσε την μια.

Το αρχείο γιατί το ανοίγεις «For Random».

Δες τα επισυναπτόμενα αρχεία και πρόσεξε την διαφορά που έχουν.

Στο ένα μεταβιβάζουμε την τιμή του textbox την μεταβλητή «strSearch» ενώ στο άλλο την περνάμε σαν όρισμα στην συνάρτηση «findtext». Αρκεί και στις δυο περιπτώσεις το περιεχόμενο των μεταβλητών να μην είναι κενό.

γιώργοςΚ 25-02-16 13:55

Γιώργο γειά σου και ευχαριστώ για την ανταπόκριση φίλε μου,

Βασικά Γιώργο μου θέλω να αποφύγω εντελώς το Input Box και να παίρνει τιμη από την φόρμα (SKey) και απο το πεδίο [0txtMod1]. Για αυτό προσπάθησα να προσαρμόσω τον κώδικα έτσι ώστε να κάνει τα εξής:

1. Στην διαδρομή "C:\ProgramData\Dash\Slash.txt" υπάρχει το αρχείο μέσα στο οποίο αποθηκεύονται περίπου 20 αριθμοί ό ένας κάτω απο τον άλλο (σε διαφορετικη γραμμή δηλαδή)

2. Εφόσον ανοίξει η φόρμα (SKey) το πεδίο [txtMod1] παίρνει όλες τις τιμές (όλες δηλαδή τις γραμμές) που υπαρχουν στο αρχείο Slash.txt που όπως είπα βρίσκεται μέσα στο Folder Dash (C:\ProgramData\Dash\Slash.txt).

3. Αυτό που προσπαθώ να επιτύχω (και θα εκτιμούσα την αμέριστη βοήθεια σου) είναι εφόσον πατώσω την εντολή cmdSearch να μπορεί ο κώδικας να "κοιτάζει" σε αυτό το αρχείο εάν υπάρχει σε οποιαδήποτε γραμμή ο αριθμός που βρίσκεται σε ένα άλλο πεδίο (το [txtData]) που βρίσκεται και αυτό στην φόρμα..

Προσπάθησα λοιπόν να μετατρέψω τον κώδικα αλλά....μάταια..



Function findtext(sfile As String) As String
lngLine = 0
nfile = FreeFile
strSearch = Forms!SKey.txtMod1

lngLine = 0
blnFound = False
Open sfile For Random As #nfile
Do While Not EOF(nfile)
lngLine = lngLine + 1
Line Input #nfile, strLine
If InStr(1, strLine, strSearch, vbBinaryCompare) > 0 Then
msg = MsgBox("Ο αριθμός :" & strSearch & " βρέθηκε στην γραμμή: " & lngLine & " θελετε να διαγραφεί?", vbQuestion + vbOKCancel)
blnFound = True
If msg = vbOK Then
Call DeleteLinefile(sfile, lngLine)
Close #nfile
Exit Do
End If
End If
Loop
If blnFound = False Then
MsgBox "Ο αριθμός :" & strSearch & " δεν βρέθηκε", vbInformation
End If
Close #nfile
End Function

Ευχαριστώ εκ προτέρων

vraxnakisg 29-02-16 11:21

Καλημέρα φίλε Γιώργο
Στον κώδικα strSearch = Forms!SKey.txtMod1 άλλαξε το σε strSearch = Forms_SKey.txtData.value.
Αρκεί να κάνεις έλεγχο να μην είναι κενό.

γιώργοςΚ 01-03-16 22:12

Καλησπέρα φίλε Γιώργο,

Σήμερα βρήκα χρόνο να ελέξω τον κώδικα. Προσπαθώντας όμως να προσαρμόσω την εντολή να "τρέχει" απο κάποιο κουμπί, έγραψα απλά το findtext αλλά κτυπάει....άλλαξα και το Function σε Public αλλά και πάλι πρόβλημα..

Κάθε βοήθεια είναι εκτιμητέα.

Σε ευχαριστώ

vraxnakisg 02-03-16 09:51

Γεια σου Γιωργο
Η συναρτηση για να εκτελεστη πρεπει να εχει ορισμα την διαδρομη του αρχειου.
π.χ call findtext(pathfile) οπου pathfile="c:\folder\folder\file.txt" .

vraxnakisg 02-03-16 09:51

Γεια σου Γιώργο
Η συνάρτηση για να εκτελεστή πρέπει να έχει όρισμα την διαδρομή του αρχείου.
π.χ call findtext(pathfile) οπου pathfile="c:\folder\folder\file.txt" .


Η ώρα είναι 16:27.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2