vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: insert und gleich danach ein select klappt nicht 
Autor: ModeratorDaveS (Moderator)
Datum: 22.09.04 19:07

Nein, ich denke das geht nicht. Access kann meines Wissens nur eine Anweisung annehmen pro Abfrage. Und Mit ExecuteNonQuery() wirst du keinen Rückgabewert bekommen. Überhaupt arbeite ich mit Parametern und nicht mit zusammengesetzten Strings, was wesentlicher fehleranfälliger und sehr unsicher ist, und ich bin auch kein Fan von Autoincrement.

Ich habe leider keine Access Db zur Verfügung. Dieser Code klappt ganz gut mit SQL Server:
        Dim mySql As String
        Dim companyname As String = "some new company 2 AG"
        Dim phone As String = "+49 89 5558140"
 
        mySql = "insert into Shippers(CompanyName, Phone) values(@CompanyName," & _
          "@Phone); Select NewId = @@IDENTITY"
 
        Dim cmd As New SqlCommand(mySql, _conn)
        cmd.CommandType = CommandType.Text
        cmd.Parameters.Add("@CompanyName", SqlDbType.Char).Value = companyname
        cmd.Parameters.Add("@Phone", SqlDbType.Char).Value = phone
        cmd.Parameters.Add("@NewId", SqlDbType.Int).Direction = _
          ParameterDirection.ReturnValue
 
        _conn.Open()
        Dim NewId As Integer
        Try
            NewId = CInt(cmd.ExecuteScalar())
        Catch ex As System.Exception
            MsgBox(ex.Message)
        Finally
            _conn.Close()
        End Try
        Debug.WriteLine("NewId=" + NewId.ToString())
Wenn man das in zwei Abfragen trennt bekommt man
        Dim mySql As String
        Dim mySql1 As String
        Dim companyname As String = "some new company 2 AG"
        Dim phone As String = "+49 89 5558140"
 
        mySql = "insert into Shippers(CompanyName, Phone) values(@CompanyName," & _
          "@Phone)"
        mySql1 = "Select NewId = @@IDENTITY"
 
        Dim cmd As New SqlCommand(mySql, _conn)
        cmd.CommandType = CommandType.Text
        cmd.Parameters.Add("@CompanyName", SqlDbType.Char).Value = companyname
        cmd.Parameters.Add("@Phone", SqlDbType.Char).Value = phone
 
        Dim cmd1 As New SqlCommand(mySql1, _conn)
        cmd1.CommandType = CommandType.Text
        cmd1.Parameters.Add("@NewId", SqlDbType.Int).Direction = _
          ParameterDirection.ReturnValue
 
        _conn.Open()
        Dim NewId As Integer
        Try
            Dim cnt As Integer = cmd.ExecuteNonQuery()
            If cnt = 1 Then
                NewId = CInt(cmd1.ExecuteScalar())
            End If
        Catch ex As System.Exception
            MsgBox(ex.Message)
        Finally
            _conn.Close()
        End Try
        Debug.WriteLine("NewId=" + NewId.ToString())
was auch erwartungsgemäss klappt.

Das in OleDb umzuwandeln dürfte nicht allzu schwer sein. Und wenn du lieber Strings zusammenbastelst sollte das auch gehen, ohne die Parameter. Du musst auch einfach "Select @@IDENTITY" schreiben. Was wirklich relevant ist ist nur der Teil von _conn.Open() bis End Try.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
insert und gleich danach ein select klappt nicht829luzifer22.09.04 15:55
Re: insert und gleich danach ein select klappt nicht646ModeratorDaveS22.09.04 16:06
Re: insert und gleich danach ein select klappt nicht599luzifer22.09.04 18:06
Re: insert und gleich danach ein select klappt nicht638ModeratorDaveS22.09.04 19:07
Re: insert und gleich danach ein select klappt nicht550luzifer22.09.04 20:57
Re: insert und gleich danach ein select klappt nicht611ModeratorDaveS22.09.04 22:44
Re: insert und gleich danach ein select klappt nicht572luzifer22.09.04 23:53

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel