[Oracle 9.2/ VB6] datum via parameter query

Pagina: 1
Acties:

  • Bats
  • Registratie: Oktober 2000
  • Laatst online: 30-01 19:14
Hoe kan ik via VB6 en Parameter queries datum velden in oracle vullen.

Voor het vullen van je datum velden in oracle moet je in je SQL* een to_date()
functie gebruiken. Wanneer ik vanuit vb een datum wil wegschrijven in Oracle
en het SQL statment gebruik:
"insert into bats (bats_Date) values (to_date(14012004, 'ddmmyyyy')"
schrijft hij het keurig weg in oracle.

Ik wil vanwege de overzichtelijkheid en omdat het makkelijk werkt de data invoeren via parameter queries. (zoals hier onder beschreven) En dat werkt goed.
Echter wanneer ik een datum moest invullen kreeg ik de eerste foutmelding. Dacht dit op te lossen door de datum functie te laten uitvoeren door de dual tabel aan te roepen. En zo de waarde in mijn datum veld te plaatsen. Toen kreeg ik deze foutmelding:

run-time error '-2147217887(80040e21)':

Multiple-step OLE DB operation generated errors. Check each OLE DB
status value, if available. No work was done

Heb tevens geprobeert de datum via een ander format te stuuren maar dat mocht niet uitmaken.

[code]
Dim cnn As ADODB.Connection
Dim sCnnString As String
Dim cmdSQL As New ADODB.Command
Dim sString As String
Dim rssql As ADODB.Recordset
Dim sformat As String

Set cnn = New ADODB.Connection
sCnnString = "DSN=DAM;User ID=ERS;Password=xxx;"

cnn.Open sCnnString

cmdSQL.ActiveConnection = cnn


sString = "INSERT INTO bats (bats_id, bats_date) VALUES (?,?)"

cmdSQL.CommandText = sString

cmdSQL.CommandType = adCmdText

cmdSQL.Parameters.Append cmdSQL.CreateParameter("@Bats_ID", adNumeric, adParamInput, 10)
cmdSQL.Parameters.Append cmdSQL.CreateParameter("@Bats_Date", adDate, adParamInput)

Set rssql = cnn.Execute("SELECT to_date(14012004, 'ddmmyyyy') datum from dual")
cmdSQL.Parameters("@Bats_ID").Value = 1
cmdSQL.Parameters("@Bats_Date").Value = rssql("datum")


cmdSQL.Execute
[\code]

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Die 14012004 moet tussen enkele quotejes iig.
Verder weet ik niet of die result set wel ziet dat het resultaat van je query een date is.
Kun je niet gewoon een datumtype van VB6 gebruiken?

Who is John Galt?


  • Bats
  • Registratie: Oktober 2000
  • Laatst online: 30-01 19:14
Wanneer ik de now functie van VB gebruik krijg ik de zelfde foutmelding, en dat is zeker in het formaat van een datum.

Overal waar ik gekeken heb lijkt het alsof ze dit onderwerp vermijden. Je kan van alles vinden over strings en integers om door te geven. Maar heel weinig over datum types.

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Een alternatief is de datum als string doorgeven aan de insert:
code:
1
sString = "INSERT INTO bats (bats_id, bats_date) VALUES (?,to_date(?,'ddmmyyyy'))"

Who is John Galt?


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Bats schreef op 19 juli 2004 @ 14:23:

cmdSQL.Parameters.Append cmdSQL.CreateParameter("@Bats_ID", adNumeric, adParamInput, 10)
cmdSQL.Parameters.Append cmdSQL.CreateParameter("@Bats_Date", adDate, adParamInput)
ik weet niet precies wat in vb de const is voor het toevoegen van data, in vbscript (via adovbs.inc) is het in ieder geval

adDBTimestamp = 135

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • Bats
  • Registratie: Oktober 2000
  • Laatst online: 30-01 19:14
Goed idee om dat zo te doen. Maar wanneer ik mijn parameter als 'addate' declareer en dan de now functie of 14012004 probeer krijg ik de melding, bij het uitvoeren van het SQL statement 'Ongeldige maand'.

Wanneer ik de parameter als string declareer 'advarchar' dan krijg ik dat er geen 'NULL' value mag worden toegevoegd.

Wanneer ik in het SQL Statement direct de datum in de to_date stop, zonder de parameters te gebruiken werkt het wel. Nu nog met de parameters.

  • Bats
  • Registratie: Oktober 2000
  • Laatst online: 30-01 19:14
Wanneer ik de 'adDBTimeStamp' gebruik heb ik het zelfde probleem als met de 'adDate'.

Hoe kan je met die parameter datums meegeven zodat deze geaccepteerd wordt door oracle.
Als Faabman dit werkend heeft met vbscript hoe ziet de value van je parameter er dan uit. Wanneer je deze hebt gedeclareert met 'adDBTimeStamp'

Laat maar. De oplossing om het via de string te doen was correct. Ik kreeg de melding dat er geen 'NULL' ingevult kan worden omdat ik voor het gemak de bats_ID niet had gevult.

Dus 'adVarChar' en dan "14012004" in de value en alles werkt.

[ Voor 32% gewijzigd door Bats op 20-07-2004 10:45 . Reden: Kan geen reply posten IExplorer fout. ]

Pagina: 1