Avatar billede cyrus2k Nybegynder
24. januar 2003 - 10:46 Der er 7 kommentarer og
2 løsninger

fange en DB error code i c++ builder

OK. Her er vores problem :

Hvordan fanger vi en error code fra et forsøg på at indsætte en række i en tabel ?
Det vi får tilbage er en helvedes masse error bokse... Er det ikke muligt at fange fejlnummeret ???

evt. noget lign.:

if (Query->ExecSQL() = "notfound")
{
så....
}
ellers ....
??????
Avatar billede soreno Praktikant
24. januar 2003 - 10:55 #1
Kig (i help) hvad ExecSQL metoden returnerer.

-1 betyder typisk fejl.

Jeg kender ikke c++ builder men mon ikke der er nogle defines så man kan gøre:
if(Query->ExecSQL() == ERROR_COULD_NOT_CONNECT)
{
  Msg("Damn!");
}

Kig evt. i dokumentationen / help.
Avatar billede cyrus2k Nybegynder
24. januar 2003 - 13:24 #2
Det er prøvet.....

Umiddelbart returnere ExecSql intet.... ??? Der står ikke noget i help, eller manual.

Ellers var dit eksempel det vi ville opnå !
Avatar billede soreno Praktikant
24. januar 2003 - 13:32 #3
Hvordan ser sql sætningen ud ?
Avatar billede doctorseb Nybegynder
25. januar 2003 - 14:43 #4
Noget i stil med følgende skulle kunne gøre det:

try
{
  Query->ExecSQL()
}
catch (EDatabaseError &e)
{
  ShowMessage(e.Message);
}
Avatar billede codesmurf Nybegynder
26. januar 2003 - 16:14 #5
Duer desværre heller ikke... Jeg kan afsløre på vegne af cyrus2k at det der bliver ledt efter er noget i retningen af:

void TfrmMain::insertUpdate(){
Query->SQL->Add("insertstatement");
if (Query->ExecSQL() == ERROR_DUBKEY){
  Query->SQL->Add("updatestatement");
  Query->ExecSQL();
}
doSomethingMore();
}

(umiddelbart returnere Query->ExecSQL() ikke noget i følge hjælpen).
Dvs. den skal ikke bare catch'es og vises, tværtimod, man skal bare kunne checke på errorcoden og derefter gøre noget andet alt efter hvilken errorcode det er. Man kunne også forestille sig at man lavede det som en case, med flere forskellige muligheder, alt efter errorcoden man får tilbage.
Avatar billede doctorseb Nybegynder
26. januar 2003 - 17:56 #6
Hvilken type er Query? TAdoQuery, TQuery, eller noget helt andet?
Hvad er det for en database I snakker med?
Avatar billede codesmurf Nybegynder
26. januar 2003 - 17:59 #7
En alm. TQuery mod en Informix DB. Men det burde vel være nogenlunde det samme mod en hvilken som helst DB? Man skal jo bare sørge for at ha' en unit der mapper den DB-specifikke fejlkode til ens konstanter.
Avatar billede doctorseb Nybegynder
27. januar 2003 - 20:04 #8
Hvilken driver bruger I, ODBC eller en native BDE-dims? Jeg vil under alle omstændigheder råde jeg til at finde en Informix OLEDB driver og benytte ADO i stedet. Det gør (om ikke andet) fejlbehandling en del letter (IMHO)
Avatar billede cyrus2k Nybegynder
09. februar 2003 - 12:54 #9
Tak for hjælpen, vi gik væk ra idéen om at fange fejlen og gjorde det på den salviske måde, ved at selecte først og se om der er et resultat....

i får 30 point hver, da det kun var jer der deltog...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester