Open Recordset

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Fr33c91.

    Open Recordset

    Neu

    Hallo Zusammen,

    ich fange gerade ganz neu mit VB an.

    ich möchte eine Telefonnummer in einer Datenbank suchen und den Namen dazu ausgeben lassen.

    VB.NET-Quellcode

    1. Function AnruferName()
    2. Dim Nummer As String = "+491542245211"
    3. Dim Name As String
    4. Dim sDsn As String
    5. sDsn = "Provider=Microsoft.Jet.OLEDB.4.0;" &
    6. "Data Source=c:\gse_demo\Kontakt.mdb"
    7. Dim db
    8. db = CreateObject("ADODB.Connection")
    9. db.Open(sDsn)
    10. Dim sSQL
    11. Dim rs
    12. sSQL = "select Name from T_Rufnummer where Rufnummer = '" & Nummer & "'"
    13. rs = CreateObject("ADODB.Recordset")
    14. rs.Open(sSQL, db, adOpenDynamic, adLockOptimistic, adCmdText)
    15. Do Until rs.EOF
    16. Name = rs.Fields(0).ToString()
    17. MessageBox.Show(Name)
    18. rs.MoveNext
    19. Loop
    20. rs.Close
    21. rs = Nothing
    22. db.Close
    23. db = Nothing
    24. End Function


    Ich bekomme immer die Meldung "System.__ComObject" und nicht den eigentlichen Name.

    Viele Dank

    Gruß
    Josh

    Neu

    Hi,
    also schön ist das nicht was du da als Code hast. Man sollte nie direkt nen Wert so:

    VB.NET-Quellcode

    1. sSQL = "select Name from T_Rufnummer where Rufnummer = '" & Nummer & "'"

    verdrahten. Aber das nur am Radne.
    Um einen Wert auszugeben musst ihm das auch sagen mit "Value".

    VB.NET-Quellcode

    1. Name = rs.Fields("Name").Value.ToString

    ​PS: Gib ihm wenn du ausliest im Idealfall auch mit, dass du nix ändern willst. "AdLockReadOnly" heißt das glaub ich. (ausm Kopf... die IntelliSense wird es dir aber verraten)
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    Neu

    Fr33c91 schrieb:

    ich fange gerade ganz neu mit VB an.
    Jo - merkt man (sorry, dassich das so unverblümt sage).
    Als Einsteiger sollteste dich erstmal mit den absoluten Basics beschäftigen, v.a. musst du wissen, dass VisualStudio mit schwachsinnigen Voreinstellungen ausgeliefert wird, die das Erlernen der Sprache ungeheuerlich erschweren.
    Also diese Deppen-Einstellungen sind das erste Problem, was zu lösen gilt, eiglich noch bevor eine Zeile Code geschrieben ist:
    Visual Studio - Empfohlene Einstellungen

    Nächster Punkt ist, dass du mit Open Recordset dir eine Db-Technologie aus dem vorigen Jahrtausend ausgesucht hast - wortwörtlich!
    Aber ehe ich dir besseres empfehle, bring erstmal deine VS-Einstellungen in Ordnung.

    Neu

    Habe noch ein Problem

    Die Connection zum MS SQL-Server wird nicht aufgebaut.

    (Es Handelt sich um VBS)

    VB.NET-Quellcode

    1. const Nummer = "+49123456789"
    2. Function AnruferName(Nummer)
    3. Dim Name
    4. Dim sDsn
    5. Dim db
    6. sDsn = "DRIVER=SQL Server Native Client 10.0;Server=SQLServer01;database=Daten;User ID=Mustermann;IntegratedSecurity=yes;"
    7. db = CreateObject("ADODB.Connection")
    8. db.Open (sDsn)
    9. Dim sSQL
    10. Dim rs
    11. sSQL = "Select Nachname from dbo.T_Kontakt where Rufnummer = '" & Nummer & "'"
    12. WScript.Echo sSQL
    13. rs = CreateObject("ADODB.Recordset")
    14. rs.Open sSQL, db, adOpenKeyset, adLockReadOnly
    15. Do Until rs.EOF
    16. AnruferName = rs.Fields("Nachname").Value.ToString()
    17. WScript.Echo AnruferName
    18. rs.MoveNext
    19. Loop
    20. rs.Close
    21. rs = Nothing
    22. db.Close
    23. db = Nothing
    24. End Function


    Weiter wir db.open (sDsn) komme ich nicht.
    Hab ich einen Fehler beim Connection-String ?

    Vielen Dank

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

    Neu

    @ErfinderDesRades

    ErfinderDesRades schrieb:

    Fr33c91 schrieb:

    ich fange gerade ganz neu mit VB an.
    Jo - merkt man (sorry, dassich das so unverblümt sage).
    Als Einsteiger sollteste dich erstmal mit den absoluten Basics beschäftigen, v.a. musst du wissen, dass VisualStudio mit schwachsinnigen Voreinstellungen ausgeliefert wird, die das Erlernen der Sprache ungeheuerlich erschweren.
    Also diese Deppen-Einstellungen sind das erste Problem, was zu lösen gilt, eiglich noch bevor eine Zeile Code geschrieben ist:
    Visual Studio - Empfohlene Einstellungen

    Nächster Punkt ist, dass du mit Open Recordset dir eine Db-Technologie aus dem vorigen Jahrtausend ausgesucht hast - wortwörtlich!
    Aber ehe ich dir besseres empfehle, bring erstmal deine VS-Einstellungen in Ordnung.



    Lass Ihn doch, er muss doch nicht gleich wie ein Profi Programmieren lernen. Wer setzt sich bitte an ein Programm und stellt es 100% ein. Jeder macht learning by doing und das heisst fehlerhafte codes erstellen und es auch umständlich Programmieren. wo andere einen einzeiler machen, werde ich als anfänger 30 zeilen schreiben und? Aber anscheinend haben einige vergessen wie Sie selbst angefangen haben.

    Neu

    Natürlich lasse ich ihn - ich kanns ja nicht verhindern.

    Ich finds nur netter, ihn gleich am Anfang auf den Holzweg aufmerksam zu machen, anstatt ihn vlt. für Jahre in die Irre wandern zu lassen.

    Auch sage ich "Wenn" du OOP programmieren lernen willst. Vielleicht will er ja garnet. Dasser jetzt auf einmal in VB-Script unterwegs ist - spricht ja ziemlich dagegen.

    Neu

    @ErfinderDesRades
    Ich finde es immer nur schlimm wie manche leute angefahren werden die ein Problem haben(das nimmt einem den spaß am proggen). Und hier spreche ich aus eigener erfahrung. Du bist was Programmieren angeht sehr gut!!! Und ich bin immer Dankbar über deinen Rat und nehme Ihn immer Dankbar an. Aber leute erstmal auf fehler aufmerksam zu machen ist nicht der Richtige weg. Das sieht danach aus ich möchte etwas sagen nur um mich besser darzustellen und die anderen zu denuzieren, finde ich nicht nett. Erst helfen und dann auf diverse Fehler aufmerksam machen ist ok. Dann bin ich als Anfänger auch bereit dir zuzuhören, da du mir geholfen hast und im ersten mein problem weg ist und ich jetzt wieder Aufnahmefähig bin.

    Neu

    Na dann lies dir mal deinen post genau durch. Ich finde es unhöflich und doch sehr herablasend und du bist nicht der einzigste. Ich seid alle wirklich profis und habt was das angeht viel wissen, aber deswegen muss man nicht gleich Anfänger denunzieren indem man Ihnen Ihre fehler aufweist. Klar möchte ich wissen was ich falsch mache, aber bitte höfflich, gleich mit der Tür ins Haus zu fallen findest du ja auch nicht nett.

    Neu

    Fr33c91 schrieb:

    Es Handelt sich um VBS
    Da wäre es ggf. klug gewesen, den Thread entsprechend zu taggen und nicht VB.Net anzugeben.
    Dann wäre obige Diskussion um OOP wahrscheinlich gar nicht entstanden.

    Fr33c91 schrieb:

    Hab ich einen Fehler beim Connection-String ?
    Gut möglich.
    Für mich macht zumindest die Kombination ​User ID=Mustermann;IntegratedSecurity=yes wenig Sinn, entweder du überlässt das Zugangsverfahren Windows oder du gibst Username und Password an.
    Schau dir mal die Möglichkeiten auf connectionstrings.com an.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Neu

    Alles gut, habe es auch nicht als angefahren erfunden.

    Mein Tag war falsch, es handelt sich nicht OOP.


    @petaod, Leider hat es nicht geholfen.
    So langsam glaube ich nicht das es am String liegt, sondern an dem Befehl.

    Visual Basic-Quellcode

    1. ​db = CreateObject("ADODB.Connection")

    Dass das db die Probleme verursacht.