Leerer String



  • hi

    ich hab nen problem
    und zwar will ich eine tabelle auslesen die 2 felder hat:
    einmal objname und einmal sollcode

    in objname steht immer was drin
    in sollcode kann es vorkommen das nichts im sinne von '' drin steht

    nun wollt ich das wie folgt machen:

    _RecordsetPtr pRecordset;
    		CString select_string="Select * FROM ARGUS.SYSOBJECTS where sgid='"+hid+"' and status=1";
    		pRecordset=DBSelectNow(select_string); 
    		while (!pRecordset->GetadoEOF()){
    			objname = (char *) (_bstr_t) pRecordset->Fields->GetItem ("objname")->Value;
    
    		sollcode = (char *) (_bstr_t) pRecordset->Fields->GetItem ("targetcode")->Value;
                   }
    

    das funktioniert aber nicht da er mir bei der sollcode zeile abstürzt wenn da nichts drin steht ...

    wie kann ich das abfangen ???

    thx für hilfe
    LT



  • Hallo,

    du kannst den Status abfragen:

    http://msdn.microsoft.com/en-us/library/ms675133(VS.85).aspx

    der einen dieser Werte hier:

    http://msdn.microsoft.com/en-us/library/ms681012(VS.85).aspx

    annehmen kann.

    MfG,

    Probe-Nutzer



  • moin

    hmmm jo ich denke das geht in die richtige richtung... aber so wirklich verstehn tu ich die msdn nicht ...

    also was ich schon versucht hab:

    if(sollcode = (char *) (_bstr_t) pRecordset->Fields->GetItem ("targetcode")->Value.vt ==NULL){
    sollcode="";
    }
    

    das hat aber leider nicht funktioniert ...
    der ist mir nicht in die if abfrage rein gegangen ...

    selbst als ich in der select abfrage dafür gessorgt hab das da '' drin steht, ging er nicht in die if abfrage...

    derzeit hab ich das so gelöst:

    CString select_string="Select objname, nvl(targetcode, '-1') as targetcode_1 FROM ARGUS.SYSOBJECTS where sgid='"+hid+"' and status=1";
    		pRecordset=DBSelectNow(select_string); 
    		while (!pRecordset->GetadoEOF()){
    			objname = (char *) (_bstr_t) pRecordset->Fields->GetItem ("objname")->Value;
    
    			sollcode = (char *) (_bstr_t) pRecordset->Fields->GetItem ("targetcode_1")->Value;
    			if(sollcode.Compare("-1")==0){
    				sollcode="";
    			}
    }
    

    nicht sonderlich schön aber es geht



  • LordTerra schrieb:

    hi

    ich hab nen problem
    und zwar will ich eine tabelle auslesen die 2 felder hat:
    einmal objname und einmal sollcode

    in objname steht immer was drin
    in sollcode kann es vorkommen das nichts im sinne von '' drin steht

    Das übliche Vorgehen ist es, daß man nicht vorhandene Einträge mit NULL in der Datenbank umsetzt, und NULL ist nun einmal kein Leerstring. Ist das Feld auf "NOT NULL" gesetzt, oder nimmst Du nur an, daß dem so sei?


Anmelden zum Antworten