Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[ADO]De default waarde van een kolom uit Oracle bepalen

Pagina: 1
Acties:
  • 145 views sinds 30-01-2008
  • Reageer

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 29-11 17:06
Hallo allemaal,

Ik heb een VB6 programma wat dmv ADO verbinding maakt met een database. Die database kan in Access, MS SQL of Oracle geplaatst zijn. Met Access en MS SQL kan ik makkelijk de default waarde van een kolom bepalen door de OpenSchema functie van ADO.

Probleem met Oracle is dat ik op die manier niet de default waarde kan bepalen van een kolom. Nu zou dit niet zo'n probleem zijn behalve dat als ik dan een rs.AddNew doe en dan van een veld wat wel een default value heeft geen waarde invul dat hij dan zegt, "Kan geen NULL waardes is de kolom invullen", dat klopt ik wil ook geen NULL waarde invullen, maar gewoon de default value.

Weet iemand hoe ik op Oracle achter die defualt waarde kan komen?

Hail to the king baby!


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 28-11 11:15

sopsop

[v] [;,,;] [v]


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 29-11 17:06
Helaas, via ADOX kan ik ook de default waarde niet te pakken krijgen? Iemand anders nog een idee?

Hail to the king baby!


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 29-11 17:06
Niemand meer?

Hail to the king baby!


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
urk_forever schreef op maandag 05 november 2007 @ 23:06:
Helaas, via ADOX kan ik ook de default waarde niet te pakken krijgen?
Want?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 29-11 17:06
Omdat die AdoX manier die op de genoemde site staat ook de default value NULL is terwijl de kolom wel een standaard waarde heeft.

Hail to the king baby!


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Waarom zet je niet in Oracle zelf een default value op de kolom?

If it isn't broken, fix it until it is..


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 29-11 17:06
Die staat erop, maar oracle vind het zo dat als je een record toevoegt dat ie dan null waardes in alle kolommen zet ipv de default waarde.
Verder wil ik de ingestelde default waarde gebruiken in mijn programma, om bepaalde checkboxes aan of uit te zetten in relatie tot de default waarde.

Hail to the king baby!


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Als ik persoonlijk gebruik kan maken van verschillende databases, gebruik ik eigenlijk nooit een RecordSet om records aan te maken. Ik vertrouw dan liever op een insert query.

Want als jij via SqlPlus een simpele insert query uitvoert, wordt dan wel dan default value gezet? Want ik maar zorgvuldig gebruik van default values op kolommen in oracle (en ook andere databases). Ik heb persoonlijk een gruwelijke hekel aan null values in een record. Alleen een 'not null' op de kolom zorgt ervoor dat altijd de waarde via de insert query moet worden doorgegeven, maar juist door de combinatie van not null en een default value zorgt ervoor dat de kolom bij een insert niet gezet hoeft te worden.

Ik heb dus het vermoeden dat je zelf null toekend aan de kolom en dat je vervolgens bij de recordset update method een database error krijgt.

Zoals gezegd, probeer eens een simpele insert query via SqlPlus. Als dat wel werkt, voer dan eenzelfde query eens uit via AdoConnection.Execute() (zonder een recordset object).

Van welke Oracle driver maak je eigenlijk gebruik? De standaard Microsoft Oracle ODBC driver, of de Oracle ODBC driver? Oracle heeft een native driver met alle mogelijkheden, terwijl de Microsoft Oracle driver alleen de standaard operaties uitvoert. Mogelijk dat dat nog een oorzaak kan zijn?

If it isn't broken, fix it until it is..


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 29-11 17:06
@Niemand_Anders: Het gaat niet alleen om het inserten van data, ik wil de default waarde ook weten om te gebruiken in mijn programma. Om bijvoorbeeld checkboxen voor velden die default true zijn ook op checked te zetten.
Ik maak gebruik van de Oracle Object for OLE (OO4O) en heb het ook getest met de standaard microsoft driver. Geen van beide ondersteunen het! Zelfs via OO4O objecten kan ik het niet op halen. :(

Hail to the king baby!


  • Surehand
  • Registratie: Februari 2003
  • Laatst online: 18-11 12:49
Kun je de view all_tab_columns niet gebruiken?

Als je daar de waarde uit data_default opvraagt voor de betreffende tabel en kolom heb je volgens mij de default te pakken.

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Punt 1 - Default waardes worden niet overgenomen: Nogmaals testen met insert query. Dan weet je of Oracle wel of niet de waarde toekent. Je moet het aantal mogelijkheden waardoor dit kan gebeuren minimaliseren. Eerst moet je weten of je tabel zelf wel goed is opgebouwd, en daarvoor kun je een simpele insert query gebruiken. Je weet dan of je naar Oracle of jouw programma moet kijken.


Punt 2 - Opvragen van default waardes: Maar ik neem aan dat de default waarde voor Oracle toch gewoon hetzelfde is voor MSSQL of MS Access? Dan kun je die wetenschap toch ook eventueel verwerken in je programma. Een andere oplossing is dat je een query uitvoert op de systeem tabellen om zo de default values te achterhalen.

If it isn't broken, fix it until it is..


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 29-11 17:06
Surehand schreef op vrijdag 16 november 2007 @ 10:30:
Kun je de view all_tab_columns niet gebruiken?

Als je daar de waarde uit data_default opvraagt voor de betreffende tabel en kolom heb je volgens mij de default te pakken.
@Surehand _/-\o_ _/-\o_ Thanks, dat is precies wat ik nodig heb, daar kan ik de benodigde informatie uit halen.

@Niemand_Anders: Punt 1. Zojuist even een kleine test applicatie gemaakt en een kleine test tabel. Met het insert statement vult oracle netjes de standaard waardes in. Daarna getest met de AddNew en Update functie en dan vult hij ook netjes de standaard waardes in. Als ik een watch op het recordset object zet zie ik in de fields na de AddNew netjes de standaard waardes staan.

Daarna getest met een bestaande tabel, na de AddNew staat de default waarde niet in het veld :? Er zit dus iets raars in Oracle waarom hij de standaard waardes niet meeneemt.

Punt 2: De default waardes zijn wel hetzelfde tussen databases, maar ik wil dat niet verwerken in mijn programma. Als het dan eens wijzigt moet ik meteen mijn programma aanpassen.

Hail to the king baby!


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Als je een kolom niet opgeeft bij een insert, dan wordt het de default waarde.
Geen je expliciet een null mee voor de betreffende kolom, dan komt die ook in de tabel.

Who is John Galt?

Pagina: 1