Brauche Hilfe

  • VB6

Es gibt 32 Antworten in diesem Thema. Der letzte Beitrag () ist von Gast.

    Hallo,
    ich bin noch ziemlicher Anfänger wenn's um VB geht. Ich hätte ein paar Fragen, da ich ein Programm in VB schreiben muss jedoch nicht genau weiß wie ich es zu stande bringe. Das Menü die Felder und Grafiken hab ich schon erstellt.
    Es funktionier wie ein Installations-programm... mann muss also nach jeder Auswahl auf weiter klicken.
    Mein aktueller Stand:
    Ich hab verschiedene PDF-Dateien gegliedert in Ordnern. (z.B Gerät\Geräte Nr.\gerät.pdf)
    In meinem Programm sollte man nun per Combo-Box im ersten Fenster Gerät auswählen können, dann auf weiter klicken. Im Zweiten Fenster Geräte Nr. und auf weiter... Im dritten soll man eine Übersicht über die PDF-Dateien haben (falls mehrere) in diesem Fall Gerät.pdf nun nur noch ein klick auf die datei und sie sollte sich öffnen. Während dem Suchvorgan würde ich noch gerne ein Ladebalken laufen lassen. Datenkbank hab ich noch keine.. weiß auch nicht wie ich das realisieren kann!?!
    Klar könnt ihr mir nicht einfach ein Programmiercode geben, aber ihr könntet mir ein Programmablauf (also befehle oder wie ich die datenbank mache) geben.
    So dass war's, war ziemlich viel, aber ich würde mich wahnissinnig über eine AW freuen.

    MfG,
    Blade_Neo
    Hallo Blade_Neo,

    ich würde dir empfehlen mit nur einem Fenster zu arbeiten, den Inhalt der ComboBox und der Label kannst du entsprechend der Situation anpassen.
    Mit "Ich hab verschiedene PDF-Dateien gegliedert in Ordnern. (z.B Gerät\Geräte Nr.\gerät.pdf)" meinst du, dass die PDF-Dateien in der logischen Ordner-Struktur eines Laufwerkes organisiert sind?
    Hast du so viele Ordner bzw. Dateien, dass sich der Einsatz einer Datenbank lohnt? Wenn das nur einige wenige Dateien pro Ordner sind, ist eine DB, so finde ich überflüssig.
    Sollen die Dateien mit dem AcrobatReader oder mit dem PDF-PlugIn von Acrobat geöffnet werden?
    Wäre klasse, wenn du uns ein paar mehr Infos geben würdest.

    Gruß Markus
    Hi alchimist,
    danke erstmal für deine AW.
    Ja, ich würde die Daten gerne in Acrobat Reader öffnen.
    Zur Zeit sind es vielleicht 7 Ordner mit paar Unterverzeichnissen, aber dass soll ja noch anwachsen. Ich hab mir auch schon überleg bzw. mitgekriegt die Methode zu verwenden wo die aktuellen Ordner Daten ausgelesen werden.

    MfG,
    Blade_Neo
    So,
    bin jetzt weiter, habe die Programmierung der Ordnerstruktur heil überstanden :D
    Nun hab ich folgendes Problem:
    Am Ende hab ich eine List Box, in der der Dateiname angezeigt wird. (z.B: hallo.pdf)
    nun hab ich ein CommandButton erstellt, er soll bei "press-Button" die gewünschte Datei öffnen.
    Ein guter Programmierer hat mir ein Modul geschrieben mit dem ich mit diesem Befehl die Datei öffnen kann:

    starteAnwendung "C:\Programme\Adobe\Acrobat 4.0\Acrobat\Acrobat.exe " & Form2.Text1.Text & "\" & Form2.Combo1.Text & "\" & Form3.Combo2.Text & "\" & Form4.Combo4.Text & "\" & Me.List1.Text

    hab mir den Befehl schon paar mal angeschaut, der müsste stimmen, kennt ihr jedoch eine andere Lösung? Bei diesem Befehl muss man ja auch den Pfad des Programmes angeben, dass find ich auch nicht so gut.

    Und wie kann ich ein Ladebalken erstellen der beim starten des Programmes das Proggi ladet. (bzw. es darstellt).

    Danke im Vorraus,
    Blade_Neo
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Integer) As Long

    Private Const SW_SHOWNORMAL As Long = 1

    Damit sollte es gehen, dann solltest du ShellExecute
    so aufrufen, da brauchst du nich den Pfad vom
    Acrobat Reader wissen. Das mit dem Ladebalken,
    da kann ich dir nich helfen, wüsste gar nich wie das
    gehen soll :

    ShellExecute 0, vbNullString, "DieZuÖffnendeDatei", vbNullString, vbNullString, SW_SHOWNORMAL


    Hi,
    erstmal danke für die schnelle AW.
    Bin ja noch ziemlich neu hab jetzt versucht die ersten Befehle in ein Modul zu schreiben.
    Und die 2.ten in den "Click" Befehl... hab auch den vollkommenen Pfad der Datei angegeben, jedoch kommt ein Fehler, dass die Zeile ShellExecute 0 nicht stimmen würde.

    MfG,
    Blade_Neo

    Wie lautet denn die genaue Fehlermeldung, dann
    kann ich dir vielleicht sagen woran es liegt.

    Hast du die ShellExecute deklaration in einem Modul
    und rufst dann ShellExecute auf ? Dann musst du
    anstatt Private Declare Function ShellExecute ...
    Public Declare Function ShellExecute
    und Public Const SW_SHOWNORMAL = 1
    verwenden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Unknown“ ()

    Hi,
    ich habs jetzt so programmiert:
    Private Sub Command1_Click()
    ShellExecute 0, vbNullString, ("& Form2.Text1.Text & " \ " & Form2.Combo1.Text & " \ " & Form3.Combo2.Text & " \ " & Form4.Combo4.Text & " \ " & Me.List1.Text"), vbNullString, vbNullString, SW_SHOWNORMAL
    End Sub

    im MODUL:

    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Integer) As Long

    Public Const SW_SHOWNORMAL As Long = 1

    Bekomme trodtzdem folgende Fehlermeldung:

    Laufzeitfehler "13":

    Typen unverträglich

    ?( ?( ?( ?( ?( ?(

    Kann mir jemand weiterhelfen?

    MfG,
    Blade_Neo



    ShellExecute 0, vbNullString, ("& Form2.Text1.Text & " \ " & Form2.Combo1.Text & " \ " & Form3.Combo2.Text & " \ " & Form4.Combo4.Text & " \ " & Me.List1.Text"), vbNullString, vbNullString, SW_SHOWNORMAL


    Wenn du das so im Code geschrieben hast,
    dann liegt der Fehler hierdran :

    ("& Form2.Text1.Text & " \ " & Form2.Combo1.Text & " \ " & Form3.Combo2.Text & " \ " & Form4.Combo4.Text & " \ " & Me.List1.Text")

    das muss lauten:

    Form2.Text1.Text & "\" & Form2.Combo1.Text & "\" & Form3.Combo2.Text & " \" & Form4.Combo4.Text & "\" & Me.List1.Text
    Was würde ich bloß ohne dieses Forum machen :D

    Naja, jetzt kommt zwar keine Fehlermeldung mehr, aber es tut sich auch nichts!?!? Kann sich das jemand erklären?

    Also nochmal im Überblick:

    Startseite
    STARTORDNER
    AUSWAHL 1 wählen
    --> WEITER BUTTON

    Seite2
    AUSWAHL 2
    --> WEITER BUTTON

    Seite3
    AUSWAHL 3
    AUSWAHL 4
    --> WEITER BUTTON

    Seite4
    AUSWAHL (eine PDF-Datei) wird angezeigt... jetzt hab ich ein Button (wird später ein Image) der mit der auf Klick die PDF-Öffnen soll...

    Wisst ihr wo das Prob liegen könnte?, hab obigen Code z.Z drinnen.

    MfG,
    Blade_Neo
    Prüf mal den Rückgabewert von ShellExecute, wenn
    die Funktion fehlgeschlagen hat. Du kannst dann mit
    GetLastDllError herausfinden, was genau das Problem
    ist.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Unknown“ ()

    Also, APIs lösen keine Fehler bei VB aus, weil sie ja
    nicht Teil von VB sind. Deshalb musst du das selber
    überprüfen, die meisten APis geben 0 bei einem Fehler
    und einen Wert ungleich Null bei erfolg zurück.
    Wenn dann 0 zurückgegeben wurde, kannst du mit
    GetLastDllError prüfen, wie die Fehlernummer lautet
    und mit der FormatMessage API dann die Fehler
    erklärung zur Fehlernummer ermitteln. In VB braucht
    man aber nicht die FormaMessage API, denn es gibt
    die Funktion Error (Error$) die die Fehlernachricht
    zurückgibt. Nun ist es aber so das die ShellExecute
    Funktion einen Wert der <= 32 ist zurückgibt wenn
    sie Fehlgeschlagen ist. Du musst also prüfen, ob
    ShellExecue einne Wert <= 32 zurückgibt und wenn ja,
    die Fehlernummer mit GetLastDllError ermitteln
    und die Fehlererklärung dazu mit Error.
    So z.B. :

    If (ShellExecute 0, vbNullString, _
    Form2.Text1.Text & "\" & Form2.Combo1.Text _
    & "\" & Form3.Combo2.Text & " \" & _
    Form4.Combo4.Text & "\" & Me.List1.Text, _
    NullString, vbNullString, SW_SHOWNORMAL) <= 32 Then

    'Fehler aufgetreten
    MsgBox "Fehler Nr." & Err.GetLastDllError & chr$(13) _
    & Error$(Err.GetLastDllError),vbExclamation,"Fehler"
    End If
    Ok Danke Marcus!!!
    Also dürfen Befehle nicht in der Klammer stehen?
    Melde mich gleich wieder ich probiere es mal aus...

    [EDIT]
    folgende Zeile hab ich nun:
    <font size="1"> Private Sub Command1_Click()

    If ShellExecute(0, vbNullString, _
    Form2.Text1.Text & "\" & Form2.Combo1.Text _
    & "\" & Form3.Combo2.Text & " \" & _
    Form4.Combo4.Text & "\" & Me.List1.Text, _
    NullString, vbNullString, SW_SHOWNORMAL) <= 32 Then

    'Fehler aufgetreten
    <font color="red"> MsgBox "Fehler Nr." & Err.GetLastDllError & Chr$(13) _
    & Error$(Err.GetLastDllError), vbExclamation, "Fehler" </font>
    End If

    End Sub[/size]
    <font size="2">
    Jetzt gibt er mir folgende Fehlermeldung raus:

    Laufzeitfehler "438"
    Objekt unterstützt diese Eigenschaft oder Methode nicht </font>

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „“ ()