Per VB auf mssql datenbank zugreifen -> Fehler

  • VB6

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Unknown.

    Per VB auf mssql datenbank zugreifen -> Fehler

    hallo
    ich habe eine sehr spezielle frage und noch ein paar weitere:

    so folgendes:

    1. ich habe das programm so gut wie fertig es sind nur SCHWERWIEGENDE fehler vorhanden. und zwar, wenn ich zu connecten versuche und der login (normaler login: sa/4 und man sa/5 angibt) falsch ist. dann schmiert dass programm gnadenlos ab. ich möchte aber, dass er mir dann in ein textfeld ausgibt...also am besten wäre wenn man den connect button klickt, kommt unten im textfeld: Try to Connect.... dann connectet er eben und wenn man dann z.b. nen falschen login hat, gibt er im Textfeld aus: Cant Connect ... wie mache ich dass am besten?

    so connectet er:
    <pre>

    Private Sub cmdConnect_Click()

    oConn.ConnectionString = "DRIVER={SQL Server};Network Library=DBMSSOCN;SERVER=" & txtServer.Text & ";UID=" & txtUser.Text & ";PWD=" & txtPass.Text
    oConn.Open
    oCmnd.ActiveConnection = oConn
    oCmnd.CommandType = adCmdUnknown

    End Sub
    </pre>
    ich habe mir überlegt ob nciht gehen sollte:
    On Error GoTo ...
    Err.Description = "Cant Connect"

    aber das funktioniert nicht :/.

    2. ich habs ja schon hinbekommen dass er auf eine mssql datenbank connectet, aber, es kommt nicht alles schön untereinander, sondern alle in einer zeile. z.b.

    so kommts im Textfeld:

    ordner 1 | ordner 2 | ordner 3 ...

    so sollte es kommen:

    ordner1
    ordner2
    ordner3
    ---------
    ich habe mir überlegt, und dos gibt ja nur Cr zurück, aba für untereinander braucht man glaube ich CrLf ... dass man das irgendwie verändern könnte

    3. dann hätte ich gerne eine Statusleiste ... nur ich finde darüber nichts im internet.

    4. wenn cih zu connecten versuche, hängt das programm. wenn er connectet ist, geht es wieder, wie kann ich diesen hänger umgehen?


    ich danke euch vielmals um eure mühe, meine antwort zu verstehen/zu beantworten.

    mfg K1ll3r
    dann schmiert dass programm gnadenlos ab

    Meinst du damit, dass eine Fehlermeldung von VB kommt und wenn man diese mit OK bestätigt ist das Programm weg? Wenn ja, versuchs mal mit :
    <pre>
    Private Sub cmdConnect_Click()
    On Error Goto Fehler
    Text1.Text="Try to Connect..."
    oConn.ConnectionString = "DRIVER={SQL Server};Network Library=DBMSSOCN;SERVER=" & txtServer.Text & ";UID=" & txtUser.Text & ";PWD=" & txtPass.Text
    oConn.Open
    oCmnd.ActiveConnection = oConn
    oCmnd.CommandType = adCmdUnknown
    Text1.Text="Connected"
    Exit Sub
    Fehler:
    Text1.Text="Cant Connect"
    End Sub
    </pre>
    ordner 1 | ordner 2 | ordner 3 ...

    so sollte es kommen:

    ordner1
    ordner2
    ordner3

    Einen Zeilenumbruch kannst du z.B. mir Chr(13) machen.
    3. dann hätte ich gerne eine Statusleiste ... nur ich finde darüber nichts im internet.

    Was genau möchtest du denn wissen? Die Zuweisung der einzelnen Felder ist so: StatusBar1.Panel(0).Text="Connected" (für Feld 1)
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau

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

    wow danke für die schnelle antwort, wichtig wäre noch frage 4, frage 3 ist nciht so wichtig: aber ich stelle mit bei frage 3 vor: wenn er connectet, dass die Progress bar eben anzeigt, wie weit er ist...

    danke, mfg K1ll3r


    /edit:

    Text1.Text="Try to Connect..." zeigt er mir NICHT an... leider das wäre noch wichtig dass er das tut, und er sollte nach jedem befehl dass textfeld NICHT clearen


    /edit2:

    und mit dem zeilenumbruch will nicht ganz funktionieren, wo/wie muss ich dieses Char(13) eintragen?

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

    wenn er connectet, dass die Progress bar eben anzeigt, wie weit er ist

    das macht nicht viel Sinn, da der Verbindungsaufbau doch nur ein einziger Befehl (oConn.Open) ist, oder?Die anderen Befehle sind doch nur Einstellungssache und merkt man eh nicht. Dann springt die Progressbar doch von 0 auf 100%, das lohnt sich nur, wenn es mehrere Schritte der Verbindung wären...

    Text1.Text="Try to Connect..." zeigt er mir NICHT an

    Dann wird die Form nicht aktualisiert, also muss diese "neu gezeichnet" werden...
    <pre>Text1.Text="Try to Connect"
    Me.Refresh </pre>

    und mit dem zeilenumbruch will nicht ganz funktionieren, wo/wie muss ich dieses Char(13) eintragen?

    Du hast doch sicher eine Schleife, mit der du die einzelnen Zeilen in das Textfeld schreibst. In der Schleife müstest du dann wiefolgt die Informationen ins Textfeld schreiben:
    <pre>Text1.Text = Text1.Text & "Ordner 1" & Chr(13)</pre>
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    nene, dass mit den zeilen ist anders gedacht ... ich sende ja etwas an die datenbank, das, was zurück kommt ist ja meistens unterschiedlich, und da kann ich nichts besonderes angeben.... die zeilenumbrüche sind ja schon vorhanden in form von: | aber im textfeld wird eben dieses zeichen angezeigt und KEIN zeilenumbruch gemacht, mit dem label geht es, mit der option WordWrap. diese gibt es leider nicht
    ja dass is mir klar markus_gräfe hab ich ja auch, aber das problem ist, dass mir mein programm die zeilenumbrüche NICHT macht sondern nur in form von:
    ordner 1 | ordner 2 | ordner 3 | ordner 4 etc

    aber was ich empfange von der mssql datenbank soll so im textfeld erscheinen:
    ordner 1
    ordner 2
    ordner 3
    .
    .
    .
    Wahrscheinlich wird dann aus der Datenbank nur ein Chr$(10) oder nur ein Chr$(13) ausgelesen, du brauchst aber Chr$(13) & Chr$(10).

    Versuch mal folgendes:

    text1.text = replace(text1.text, chr$(10), Chr$(13) & Chr$(10))

    ODER

    text1.text = replace(text1.text, chr$(13), Chr$(13) & Chr$(10))
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    so siehts jetzt aus:



    unten rot gekennzeichnet is die statusbar
    ein textfeld mit befehlen
    und ein butten, der eine txt mit befehlen öffnen soll...

    also dass soll passieren:

    - man drückt den butten und wählt eine txt mit seinen befehlen aus
    - diese werden in das untere textfeld geladen
    - dann drückt man senden, jede zeile soll einzeln gesendet werden!
    - die progress bar soll anzeigen, wie weit er mit dem senden ist

    hat jmd ne ahnung wie ich das anstellen könnte?

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

    Der Code geht davon aus, dass das untere Textfelt
    txtUnteresFeld, der ScriptÖffnen Button cmndOpenScript,
    der Senden Button cmndSend und die Statusleiste
    prgStatus heißt.

    <pre>
    Option Explicit

    Private Sub cmndOpenScript_Click()
    Dim strFileName As String
    Dim strInput As String
    Dim iChannel As Integer

    strFileName = "C:\Bla.txt"

    strInput = String$(FileLen(strFileName), Chr$(0))
    iChannel = FreeFile
    Open strFileName For Binary Access Read As #iChannel
    Get #iChannel, , strInput
    Close #iChannel

    txtUnteresFeld.Text = strInput
    End Sub

    Private Sub cmndSend_Click()
    Dim i As Long
    Dim strCommands() As String

    If Len(txtUnteresFeld.Text) > 0 Then
    strCommands = Split(txtUnteresFeld.Text, vbCrLf)

    For i = 0 To UBound(strCommands)
    'Keine Ahnung, wie man das übergeben muss, der Befehl steht jedenfalls
    'in der Variable strCommands(i)
    If strCommands(i) <> vbNullString Then
    SqlObject.SendCommand strCommands(i)
    End If
    prgStatus.Value = i / UBound(strCommands) * 100
    DoEvents
    Next i
    End If
    End Sub
    </pre>