[Visual basic && MsSql] SELECT @@IDENTITY returns null

Pagina: 1
Acties:

  • Chielos
  • Registratie: Maart 2003
  • Laatst online: 17-11-2025

Chielos

Inno Mini Cooper

Topicstarter
Ik heb het volgende probleem. Ik voer eerst een insert uit met een query op adodb recordset met daarbij een connection die public staat in een module.. Daarna select ik met @@identity de laatst toegevoegde waarde. Dit werk perfect op het Mainform.
Deze insertfunctie bestaat in een module overigens.

Daar roep ik deze functie aan in een Pop-up, en opeens doet de identity het niet meer. Hij returnt een Null. Wanneer ik de connectie aanpas in een tmpconnection doet hij het wel. Wordt de connection gelocked ofzo?

Alvast bedankt!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
@@IDENTITY kun je alleen in de scope van de connectie van de laatste insert opvragen. Het is goed gebruik deze direct met het insert statement op te vragen, kun je eens wat code laten zien?

Oops! Google Chrome could not find www.rijks%20museum.nl


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:34
Sluit je je connectie nadat je de INSERT doet en voordat je de SELECT doet ?

https://fgheysels.github.io/


  • Chielos
  • Registratie: Maart 2003
  • Laatst online: 17-11-2025

Chielos

Inno Mini Cooper

Topicstarter
Bedankt voor de reacties,

De connectie blijft openstaan, de recordset wordt wel geclosed en daarna opnieuw geopend met de Identity.

Scope heb ik geprobeerd dat geeft hetzelfde resultaat.

Het vreemde is dat op het mainframe hetzelfde control wordt aangeroepen als op het popup wat vanaf het mainframe wordt aangeroepen. Het popupje heeft exact hetzelfde pop-up erop staan.

De insert werkt overigens wel, alleen de identity geeft null terug..

  • Chielos
  • Registratie: Maart 2003
  • Laatst online: 17-11-2025

Chielos

Inno Mini Cooper

Topicstarter
code:
1
2
3
4
5
6
strsql = "Insert statement"
  Set insert2Recordset = New ADODB.Recordset
        insert2Recordset.CursorLocation = adUseClient
        insert2Recordset.Open strSql, gConnection, adOpenStatic, adLockOptimistic, adCmdText
        
        insert2Recordset.Open "SELECT @@IDENTITY", gConnection, adOpenStatic, adLockOptimistic, adCmdText


gconnection is public. Insert2recordset is een dim in dezelfde private methode.

[ Voor 14% gewijzigd door Chielos op 04-10-2004 14:41 ]


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
probeer eens
code:
1
"INSERT INTO bla (foo) values (bar); SELECT @@IDENTITY"
als SQL statement.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Chielos
  • Registratie: Maart 2003
  • Laatst online: 17-11-2025

Chielos

Inno Mini Cooper

Topicstarter
zo bijvoorbeeld?
code:
1
2
3
insert2Recordset.Open strSql & "; SELECT @@IDENTITY as id", gConnection, adOpenStatic, adLockOptimistic, adCmdText

intTmpNbr = insert2Recordset.fields(0)


Geeft geen resultaat terug iig, of ik moet iets fout gedaan hebben ergens..
<kan item niet vinden....>

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je moet nog de NextRecordSet methode aanroepen om de iD te krijgen.


code:
1
intTmpNbr = insert2Recordset.NextRecordSet.fields(0)

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Chielos
  • Registratie: Maart 2003
  • Laatst online: 17-11-2025

Chielos

Inno Mini Cooper

Topicstarter
ok dat werkt, maar wat is de verklaring hiervan? Dat het wel op het mainframe werkt maar niet op een popup...

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Chielos schreef op 04 oktober 2004 @ 15:13:
ok dat werkt, maar wat is de verklaring hiervan? Dat het wel op het mainframe werkt maar niet op een popup...
In de popup maak je gebruik van een nieuwe connectie, de informatie is niet meer beschikbaar als je een nieuwe connectie gebruikt.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Chielos
  • Registratie: Maart 2003
  • Laatst online: 17-11-2025

Chielos

Inno Mini Cooper

Topicstarter
popup maakt gebruik van dezelfde public connection die in een losse module staat.. dus hij maakt volgens mij dan geen "nieuwe" connectie. Of ik moet een verkeerd beeld hebben van nieuw...

  • Chielos
  • Registratie: Maart 2003
  • Laatst online: 17-11-2025

Chielos

Inno Mini Cooper

Topicstarter
ik heb hetzelfde probleem ook bij de transacties.

bij gconnection.execute op het popup venster krijg ik de volgende melding :

"cannot create new connection because in manual or distributed transaction mode"
Pagina: 1