# Form mit Doc datei verlinken & Addition Code



## hausmeister079 (7. Juli 2008)

Guten Tag zusammen,

hoffe das mir jemand weiterhelfen kann mit meinem folgendem Problem.

ich weiss nicht genau wie ich einen code schreiben kann, der folgendes abfragt:
Ich habe auf meiner Festplatte C:\Test.doc eine doc datei gespeichert. diese Datei hat keinen Inhalt, da sie nur dazu dient, wenn ich mein Programm aufrufen will, das das Programm praktisch diese Datei checkt ob sie in dem Verzeichnis ist oder nicht. Wenn sie in dem verzeichnis ist, oeffnet sich das programm. Wenn die Test.doc datei hingegen nicht in dem verzeichnis ist, oeffnet sich auch nicht das Programm. 

Ich habe es mit doclocation versucht, aber irgendwie ging das nicht.

Jemand einen Tip?

Dazu mein zweites Problem:
Ich habe mehrere Labels und jedes einzelne Label hat einen Wert. Die labels sind mit checkboxen verlinkt, wenn ich auf check1 klicke sehe ich den wert label1 ....
Mein problem ist, dass wenn ich die ausgewaehlten Labels addieren will, das Programm alle label addiert, auch die, die nicht sichtbar sind. Wie kann ich ein code schreiben, sodass nur die sichtbaren labels addiert werden?

Fuer jeden Tip waere ich dankbar.

MfG


----------



## NeMeSiS1987 (7. Juli 2008)

Mit was genau programmierst du?


----------



## Zvoni (7. Juli 2008)

EDIT: *grml*

Public Function FileExist(FileName As String) As Boolean

    FileExist = Dir(FileName) <> ""

End Function

Aufruf dann mit:

If FileExist("C:\Test.doc") then
    DoSomething
Else
    DoSomethingElse
End if


----------



## Masterclavat (7. Juli 2008)

Zu Frage 1:
Da empfehle ich dir das. 

Frage 2 würd ich so lösen:

```
Dim summe As Integer
   
   If Label1.Visible Then summe = summe + Label1
   If Label2.Visible Then summe = summe + Label2
   If Label3.Visible Then summe = summe + Label3
   ' ...usw
```

MfG


----------



## hausmeister079 (7. Juli 2008)

Ich programmiere mit VB6. Also ich möchte das das programm bevor ich es starte nur abfragt ob die .doc datei im verzeichnis ist oder nicht. wenn ja, dann öffnet sich das programm, wenn nein, dann öffnet es sich nicht.

zu dem addieren der labels, hatte ich das problem, dass das programm alles addiert hatte auch die labels die nicht visible waren.
Ich werde direkt mal eure tips ausprobieren....

danke dafür schonmal


----------



## hausmeister079 (7. Juli 2008)

Nochmal eine andere Frage, ich habe eine Inputbox die dazu dienen soll, dass Passwort einzugeben, doch wie kann ich das Wort **** <-- mit sternen verweisen anstatt man das Kennwort lesen kann?

und kann man auch von der inputbox den befehl "Abbrechen" umbenennen?

Die Tips haben mir weitergeholfen, vielen Dank dafür an jeden der beigetragen hat...


----------



## Alex F. (7. Juli 2008)

Nein kann man nicht. 

Hierfür müsste man sich eigentlich eine eigene Login-Form basteln. Je nachdem welche Version du von VB hast gibt es das sogar als Vorlage.
Grüsse bb


----------



## hausmeister079 (7. Juli 2008)

ok, ich habe VB6, denke mal das es nicht damit geht.

@Masterclavat

der code funktioniert nicht bei mir mit der summe, hast du noch einen anderen auf Lager?


----------



## Zvoni (7. Juli 2008)

brainbyte hat gesagt.:


> Nein kann man nicht.




Kann man doch, nur die Frage ist, ob es das wert ist

Lösung siehe hier: --> http://www.tek-tips.com/faqs.cfm?fid=4617


----------



## Alex F. (7. Juli 2008)

Mit version meinte ich die Enterprise oder die "normale" oder die "Student" -Version
Sonst musst du dir halt einfach eine Form mit einer Textbox basteln. Die hat die Eigenschaft PasswordChar da kann man dann XXXX oder oooo einsetzten.

Zu dem Problem mit Masterclavats post ! Warum funktioniert das nicht bekommst du einen Fehler ? 

Grüsse bb


----------



## Masterclavat (7. Juli 2008)

> @Masterclavat
> 
> der code funktioniert nicht bei mir mit der summe, hast du noch einen anderen auf Lager?



Was genau funktioniert denn nicht? Bekommst du irgendwelche Laufzeitfehler?


----------



## hausmeister079 (7. Juli 2008)

wenn das label visible dann sagt mir die summe gar nichts an, sprich der wert ändert sich nicht. wenn aber das label invisible ist dann kommt der fehler 

laufzeitfehler '13' typen unverträglich


----------



## Zvoni (7. Juli 2008)

hausmeister079 hat gesagt.:


> wenn das label visible dann sagt mir die summe gar nichts an, sprich der wert ändert sich nicht. wenn aber das label invisible ist dann kommt der fehler
> 
> laufzeitfehler '13' typen unverträglich



Standard-Eigenschaft des "Label"-Steuerelements ist Caption, mit Datentyp String

Laufzeitfehler 13 - Typen unverträglich ist meistens ein Hinweis, dass versucht wird Äpfel mit Birnen zu addieren!


----------



## hausmeister079 (7. Juli 2008)

Das komische ist ja, dass er nur den Fehler macht, wenn ich keine Labels auswähle.
Jedoch wenn ich ein Label auswähle und dies visible wird addiert er es nicht bzw nimmt den Wert nicht in meine Summe bzw Label52 über.


----------



## Zvoni (7. Juli 2008)

hausmeister079 hat gesagt.:


> Das komische ist ja, dass er nur den Fehler macht, wenn ich keine Labels auswähle.
> Jedoch wenn ich ein Label auswähle und dies visible wird addiert er es nicht bzw nimmt den Wert nicht in meine Summe bzw Label52 über.



Kannst du mal den Code der Prozedur hier hineinstellen, und markieren, wo der Fehler auftritt? Um ehrlich zu sein, kann ich mir gerade nicht vorstellen, was du eigentlich erreichen willst!


----------



## hausmeister079 (7. Juli 2008)

Der Fehler tritt schon beim ersten Label auf.

If Label1.Visible Then summe = summe + Label1

VB markiert was ich in gelb markiert habe, 
Ich muss ein Programm für meine Arbeit schreiben, was uns Preise ausgibt. Ich habe zwei Combobpxen. Je nachdem was ich aus diesen Combos auswähle, ändert sich der Preis bzw Wert von den einzelnen labels. Die labels habe ich mit checkboxen verlinkt, sprich jedes label hat seinen eigenen checkbox. Wenn ich jetzt label1 und label2 visible mache, soll Label52 diese zwei addieren. mit meinem herkömmlichen code, hat VB auch die anderen labels addiert, die invisible waren.
Die auf der Arbeit denken, nur weil ich Maschinenbau studiert habe könnte ich auch Programme schreiben, eine Ausrede um Geld einzusparen.
Ok, vielen Dank für deine Mühe zu Helfen.
Werde mich morgen wieder melden, hier ist es Nachtime.

Gruss aus dem Winter Australiens


----------



## Zvoni (7. Juli 2008)

hausmeister079 hat gesagt.:


> Der Fehler tritt schon beim ersten Label auf.
> 
> If Label1.Visible Then summe = summe + Label1
> 
> ...



1) Aus deinem Kommentar leite ich ab, dass du 52 (!!) Labels auf deiner Form hast! Warum erstellst du nicht einfach ein Control-Array? Ist IMHO viel einfacher dann, die Dinger abzufahren.

For i=1 to AnzahlLabels

if Label(i).Visible then Summe=Summe + Val(Label(i).Caption)

next

2) Da dich das Programm bereits in der ersten Zeile anmeckert (mit Fehler 13 - Type Mismatch), stimmen die Datentypen nicht überein. Da du addieren willst, gehe ich davon aus, dass in den ganzen Labels Zahlen stehen sollen. Es wäre eine Überlegung wert, bei Programmstart alle Labels mit gültigen Zahlenwerten zu initialisieren. Achtung: Solltest du bei irgendeinem Label einen String drinstehen haben, wird dich Val(Label) (siehe Punkt 1) auch anmeckern.

Eventuell eine Plausibilitätsabfrage einbauen:

For i=1 to AnzahlLabels

if Label(i).Visible then 
If IsNumeric(Label(i).Caption) Then Summe=Summe + Val(Label(i).Caption)
End if

next


----------



## hausmeister079 (8. Juli 2008)

Ok, jetzt erhalte ich keine Fehler Meldung mehr, jedoch erscheint keine Zahl in meiner Label52 box. Noch einen anderen Tip?


----------



## Zvoni (8. Juli 2008)

hausmeister079 hat gesagt.:


> Ok, jetzt erhalte ich keine Fehler Meldung mehr, jedoch erscheint keine Zahl in meiner Label52 box. Noch einen anderen Tip?



Tja, damit hast du meine Vermutung bestätigt: Du hast mit 99% Wahrscheinlichkeit Strings (=Text) in deinen Labels stehen, und die kann man nun mal nicht wie ZAHLEN (!!) addieren.
Vor allem nachdem ich deinen anderen Thread gefunden habe!

Private Sub Label52_Click()

'Rechen Code fuer Einkaufskosten

summe = Val(Label62) + Val(Label2) + Val(Label3) + Val(Label4) '*Rest weggeschnippelt*

Label62.Caption = CStr(Label62) 'Gearbox
Label2.Caption = CStr(Label2) 'Basic Design
Label3.Caption = CStr(Label3) 'Basic Fabrication
Label4.Caption = CStr(Label4) 'Basic Torquw Arm
*Rest weggeschnippelt*

Du hast Strings in den Labels stehen! Kein Wunder, dass dein Programm dauernd wegen Type Mismatch meckert.


----------



## hausmeister079 (8. Juli 2008)

ok, was ist dein Tip nun fuer mich?


----------



## Zvoni (8. Juli 2008)

hausmeister079 hat gesagt.:


> ok, was ist dein Tip nun fuer mich?



Einfach mal Testweise feste Zahlenwerte den Labels zuweisen, den ganzen Code

Text1.Text=Irgendwas
usw.
Label62.Caption = CStr(Label62) 'Gearbox
Label2.Caption = CStr(Label2) 'Basic Design
Label3.Caption = CStr(Label3) 'Basic Fabrication
Label4.Caption = CStr(Label4) 'Basic Torquw Arm
blablablab

auskommentieren (und jeden weiteren Code, der die Werte der Labels verändert), sodass du nur den Code hast

If Label.Visible then summe=summe+Val(Label)

Damit einfach mal testen, ob überhaupt der Additions-Code funktioniert

Beispiel:

Sub Form_Load

Label1.Caption="1"
Label2.Caption="2"
usw.

End Sub

Sub Label52_Click
If Label1.Visible then summe=summe+Val(Label1)
usw.
End Sub


----------



## hausmeister079 (9. Juli 2008)

Danke, ich werd es morgen früh mal ausprobieren.
Weiss ja nicht ob es relevant ist oder nicht, doch die Werte der einzelnen Labels ändern sich, je nachdem was ich aus der Combobox auswähle.


----------



## Zvoni (9. Juli 2008)

hausmeister079 hat gesagt.:


> Danke, ich werd es morgen früh mal ausprobieren.
> Weiss ja nicht ob es relevant ist oder nicht, doch die Werte der einzelnen Labels ändern sich, je nachdem was ich aus der Combobox auswähle.



Das habe ich mir schon gedacht, und eine Änderung ist ja auch nicht das Problem. Das Problem ist, wenn du in Label2 zuerst eine Zahl hast, diese addiert wird (label52), und dann Label2 auf einen TEXT geändert wird!! Eine Änderung Zahl zu Zahl ist kein Problem!

Apfel+Apfel=Äpfel
Apfel+Birne=Mist


----------



## hausmeister079 (11. Juli 2008)

Hallo,

also ich habe es endlich hinbekommen mit deiner Formel. Werde dies jetzt mal in mein eigentliches programm einbinden und hoffen, dass es auch dort t.

Ich habe mir auch nochmal deine Idee durch den Kopf gehen lassen, das es vielleicht besser ist, in einer Excel Datei all meine Preise einzutragen und wenn ich aus der combobox etwas auswähle, sich meine labels ändern. Doch wie kann ich wenn ich etwas auswähle, das der Wert bzw Zahl von der Excel datei in das ensprechende Label kommt?

Vielen Dank für die Hilfe...


----------



## hausmeister079 (13. Juli 2008)

@Zvoni

also wenn ich nun den Code in mein eigentliches Programm einfüge t es wieder nicht, es addiert alle Label zusammen... Dabei will ich ja nur das es addiert wenn die labels visible sind. Es muss also daran liegen, das die Werte in der Combo boxen sind... Hast du noch einen anderen Tip?


----------



## Zvoni (14. Juli 2008)

hausmeister079 hat gesagt.:


> @Zvoni
> 
> also wenn ich nun den Code in mein eigentliches Programm einfüge t es wieder nicht, es addiert alle Label zusammen... Dabei will ich ja nur das es addiert wenn die labels visible sind. Es muss also daran liegen, das die Werte in der Combo boxen sind... Hast du noch einen anderen Tip?




Dazu müsste ich den gesamten Code sehen. So per Ferndiagnose ist das nur schwer nachzuvollziehen, woran das liegt.


----------



## hausmeister079 (15. Juli 2008)

Hallo,

hast du eine Email Addy dann sende ich dir mal das ganze programm und du kannst einsehen, was nicht in ordnung ist. 
Ich kann mir nur vorstellen das es mit der Combobox zusammen haengt...

Vielen Dank im voraus fuer deine Hilfe.


----------



## Zvoni (16. Juli 2008)

hausmeister079 hat gesagt.:


> Hallo,
> 
> hast du eine Email Addy dann sende ich dir mal das ganze programm und du kannst einsehen, was nicht in ordnung ist.
> Ich kann mir nur vorstellen das es mit der Combobox zusammen haengt...
> ...



Hab dir meine Mail-Adresse per PM geschickt


----------

