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)

γιώργοςΚ 14-01-16 22:38

Έλεγχος εάν υπάρχει ο αριθμός στο text file
 
Φίλοι μου καλησπέρα σας,

Μήπως γνωρίζει κάποιος εάν είναι δυνατόν να συγκρίνονται δύο τιμές ανάμεσα σε ένα πεδίο μιας φόρμας και σε ένα αρχείο txt. το οποίο βρίσκεται στον C:? Να μπορώ δηλαδή ας πούμε στο On-Open Event της φόρμας να τρέχει ο κώδικας και εφόσον ανοίξει να μου δίνει μήνυμα ότι ας πούμε ο αριθμός 100 υπάρχει μέσα στο text αρχείο που βρίσκεται στον C:

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

kapetang 15-01-16 14:39

1 Συνημμένο(α)
Καλησπέρα

Γιώργο, στο συνημμένο θα βρεις μια προσομοίωση του ζητούμενου.

1) Μετά την αποσυμπίεση αντίγραψε το αρχείο Test.txt στο φάκελο C:\Test.

2) Άνοιξε τη ΒΔ και τη φόρμα frmTest και μετακινήσου στις εγγραφές.

3) Παρατήρησε τα σχετικά μηνύματα.

Φιλικά/Γιώργος

γιώργοςΚ 15-01-16 20:27

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

Σε ευχαριστώ πολύ για την βοήθεια, είναι όντως ότι ζητώ μόνο που εάν υπάρχει το ενδεχόμενο να δημιουργείται αυτόματα το αρχείο txt είναι το ιδανικό. Δηλαδή το τελειο στην περίπτωση μου θα ήταν:

1. Με το άνοιγμα της βάσης να μπορεί να γίνεται έλεγχος εάν και κατά πόσο υπάρχει αυτό το αρχείο στον C: και στο folder που θα καθορίσω

2. Εάν δεν υπάρχει να μπορώ να το δημιουργώ με την χρήση μιας εντολής

Εάν και αυτό γίνει εφικτό θα με βοηθούσε αφάνταστα....

Σε ευχαριστώ και πάλι

kapetang 16-01-16 06:23

1 Συνημμένο(α)
Καλημέρα

Γιώργο, δες το συνημμένο.

Όταν φορτώνεται η φόρμα frmStart εκτελείται κώδικας, που ελέγχει αν υπάρχει το αρχείο “c:\Test\test.txt”.

Αν υπάρχει το αρχείο η διαδικασία τερματίζει.

Αν δεν υπάρχει:

1) Δημιουργείται ο φάκελος “c:\Test”, αν δεν υπάρχει.

2) Δημιουργείται το αρχείο “c:\Test\test.txt”.

3) Εισάγονται δεδομένα στο αρχείο από το χρήστη.

Φιλικά/Γιώργος

γιώργοςΚ 17-01-16 15:08

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

Έχω δοκιμάσει την λύση που προτείνεις και αντιμετωπίζω ένα μικρό πρόβλημα. Εφόσον ανοίξει η φόρμα frmStart η οποία περιέχει τον κώδικα ελέγχου εάν υπάρχει το text file, μου βγάζει ένα InputBox το οποίο θέλω να απαληφθεί...

Δοκιμασα να κάνω μια μετρτοπή στον κώδικα διαγράφωντας το κομματι του κώδικα που σχετίζεται με το InputBox και βάζωντας στην θέση του να ενημερώνεται απο ένα unbound που έβλα στην φόρμα αλλά, αν και τρέχει ο κώδικας, πηγαίνει και μου βάζει εκατοντάδες στοιχεία μέσα στο αρχείο Test.txt.....

Τι κανω λάθος Γιώργο?

Παραθέτω τον κώδικα με την μετατροπή που έκανα

Sub CreateTextFile(sFile As String)
Dim nFile As Integer, sNum As String

'Ο επόμενος ελεύθερος αριθμός για ταυτότητα αρχείου
nFile = FreeFile

'Άνοιγμα αρχείου για εγγραφή δεδομένων
Open sFile For Output As #nFile

Do
sNum = Forms!StartForm.CurrentSVN


If sNum = "" Then
Exit Do
Else
Print #nFile, "" & sNum & ""
End If
Loop

Close #nFile

End Sub

kapetang 17-01-16 18:15

Γιώργο, όπως ήταν διαμορφωμένος ο κώδικας, παρουσιάζοντας διάφορα InputBox, έδινε τη δυνατότητα προσθήκης στο αρχείο πολλών αριθμών.

Γι’ αυτό που θέλεις δοκίμασε τον κώδικα:

Κώδικας:

Sub CreateTextFile(sFile As String)
    Dim nFile As Integer, sNum As String

    'Ο επόμενος ελεύθερος αριθμός για ταυτότητα αρχείου
    nFile = FreeFile

    'Άνοιγμα αρχείου για εγγραφή δεδομένων
    Open sFile For Output As #nFile

    sNum = Nz(Forms!StartForm.CurrentSVN, "")

    If sNum <> "" Then
        Print #nFile, "[" & sNum & "]"
    End If

    Close #nFile

End Sub


γιώργοςΚ 17-01-16 22:10

Καλησπέρα και πάλι Γιώργο και σε ευχαριστώ πολύ για την βοήθεια.

Θα δοκιμάσω την αλλαγή στον κώδικα αύριο και αν έχω οποιοδήποτε πρόβλημα θα επανέλθω ξανά.

Καλό βράδυ και ευχαριστώ ξανά

γιώργοςΚ 19-02-16 14:59

Καλησπέρα σε όλους τους φίλους,

Με την βοήθεια του φίλου μας Kapetang (τον οποίο ευχαριστώ θερμά και πάλι) έφτασα στο ζητούμενο του προβλήματος μου που ήταν στην ουσία η δημιουργία ενός Folder και ενός αρχείου .txt μέσα στο οποιο θα αποθηκεύονται διάφοροι αριθμοί.

Χρησιμοποιώντας λοιπόν τον κώδικα και την βοηθεια του Kapetag μπόρεσα δηλαδη να κάνω τα εξής:

Όταν φορτώνεται η φόρμα frmStart εκτελείται κώδικας, που ελέγχει αν υπάρχει το αρχείο “c:\Test\test.txt”.

Αν υπάρχει το αρχείο η διαδικασία τερματίζει.

Αν δεν υπάρχει:
1) Δημιουργείται ο φάκελος “c:\Test”, αν δεν υπάρχει.
2) Δημιουργείται το αρχείο “c:\Test\test.txt”.
3) Εισάγονται δεδομένα στο αρχείο από το χρήστη.

Τώρα όμως θα ήθελα και ένα δεύτερο σκέλος του ζητούμενου μου να μπορεί με κάποιο τρόπο να γίνεται: Θέλω να μπορω να προσθέτω ή αντιστόφως να σβήνω κάποια απο τα δεδομένα που υπάρχουν σε αυτο το αρχειο. Δηλαδή:

¨Εστω ότι υπάρχει ο φάκελος και το αρχείο στην διαδρομή “c:\Test\test.txt”.
1) Να μπορώ μεσω μιας εντολης να προσθετω και άλλα δεδομένα στο file .txt (σε νέα γραμμή)
2) Να μπορώ επίσης μέσω μιας εντολής να εντοπίζω τον αριθμό στο αρχειο .txt που θέλω να διαγράψω και να μπορώ να το κάνω..

Θα εκτιμούσα την βοήθεια σας και προσδοκώ πως το θα επιτευχθεί το ζητούμενο με την δικής σας βοήθεια.

Με εκτίμηση,

vraxnakisg 19-02-16 22:33

1 Συνημμένο(α)
Γεια σου φιλέ Γιώργο,
Πιστεύω να είναι αυτό που θέλεις.
Δες το συνημμένο αρχείο.

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

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

Υπερ-πολύτιμη βοήθεια σου φίλε μου..!! Με καλύπτει η λύση σου αλλά χωρίς τα Input Boxes..! Θα προσπαθήσω να τα αφαιρέσω και να διαμορφώσω τον κώδικα έτσι ώστε να παίρνει τιμή απο κάποιο πεδίο που θέλω.. Επλίζω Γιώργο μου να τα καταφέρω (δεν είμαι έμπειρος σε θέμα vba)

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

Φιλικά,

γιώργοςΚ 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" .

γιώργοςΚ 02-03-16 10:31

Γιώργο γειά σου και πάλι,

Θα κάνω τις δοκιμές μου φίλε και αν έχω πρόβλημα θα επανέλθω.. Απολογούμαι εάν κάνω ηλίθιες ερωτησεις αλλά δεν γνωριζω και πολλά απο κώδικα...Το παλεύω πάντως..!!

Νά σαι καλά και ευχαριστώ


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

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


Search Engine Optimization by vBSEO 3.3.2