Avatar billede kierch Nybegynder
22. august 2003 - 12:05 Der er 15 kommentarer og
1 løsning

Short date format

Jeg har en rutine hvor jeg skal gemme en dato i en database.
I mit prg er dato'en gemt i
char Date[10]; //Format 08/22/03

I Databasen er formatet
Short Date

Jeg har prøvet at retunere det som

return CString(Date);

Men det duer ikke. Er der nogen forslag ??
Avatar billede jpk Nybegynder
22. august 2003 - 12:09 #1
Bruger du formatet MM:DD:YY..?
Avatar billede kierch Nybegynder
22. august 2003 - 12:35 #2
Min Dato funktion er som følger


int iTemp;
  // Calculate Weeknumber
    struct tm *Idag;
    time_t ltime;
    _tzset();

    time(&ltime);
    /* Use time structure to build a customized time string. */
    Idag = localtime(&ltime);
    strftime(CurrentWeek,4," %W", Idag );
    iTemp= atoi(CurrentWeek);
    iTemp ++;  // Weeknumber start from 0
      sprintf( CurrentWeek, "%.2i,", iTemp);
 
    _strtime( Shift ); // Get Timestamp
    _strdate( Date );  // Get Datestamp
Avatar billede kierch Nybegynder
22. august 2003 - 13:00 #3
I databasen er formatet
19-06-94 (Short Date)
Avatar billede jpk Nybegynder
22. august 2003 - 13:06 #4
Hvad er det præcis der går galt?
Er det bare fordi formatet ikke passer?

Hvis du bruger formaterne:
MM/DD/YY i koden
DD-MM-YY i DB'en

Kan du jo lave en konverteringsfunktion der tager det første format som indput og giver det andet som output..?
Avatar billede kierch Nybegynder
22. august 2003 - 13:21 #5
Yield01Set.m_DATE=Yield.GetDate();
denne linje giverfølgende fejl.
C:\SW-root\7002850\FAN_HMSDlg.cpp(5139) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class CString' (or there is no acceptable conversion)
m_date har følgende format:    CTime    m_DATE;
Avatar billede jpk Nybegynder
22. august 2003 - 13:27 #6
Okay, hvis det er en CTime, skal du jo lave sådan en fætter.

CTime har en constructor der ser sådan ud:
CTime( int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec, int nDST = -1 );

Altså kan du returnere et objekt initialiseret med værdier fra din streng
Avatar billede jpk Nybegynder
22. august 2003 - 13:47 #7
Du kunne fx gøre noget lign.:

CString strDate(Date);
int month = atoi(strDate.Left(2));
int day = atoi(strDate.Mid(3, 2);
int year = atoi(strDate.Right(2);
return CTime(year, month, day, 0, 0, 0);
Avatar billede laffe Nybegynder
22. august 2003 - 13:56 #8
Det er farlig, at opdatere et dato felt i en database på baggrund af et format eg. DD-MM-YY.

Da formatet bestemmes af styre systemet. Du burde gemme dat som en værdi.
Avatar billede jpk Nybegynder
22. august 2003 - 14:03 #9
laffe >> Opdateringen sker udfra et CTime objekt, ikke et bestemt text-format...
Avatar billede laffe Nybegynder
22. august 2003 - 14:23 #10
>jpk

Du skriver:

Hvis du bruger formaterne:
MM/DD/YY i koden
DD-MM-YY i DB'en

Det burde være ligemeget hvordan formatteringen er i koden eller i databasen, da data feltet kun er en værdi. Det var derfor jeg kommenterede det.

Jeg skal skynde mig at sige, at jeg ikke kender CTime objectet.
Avatar billede jpk Nybegynder
22. august 2003 - 14:39 #11
laffe >> I nogle databasesystemer kan man indsætte/opdatere datofelter via en simpel tekststreng. Hvis man anvender denne metode (dermed ikke sagt at det er den foretrukne) er det et krav man ved hvordan DB'en forventer formatet skal være...

Det var først i indlægget af 13:21:14, vi fik at vide at der rent faktisk blev forventet et CTime objekt. Derfor forsøgte jeg efterfølgende at lave en "bro" mellem char-arrayet (arrgh) og CTime objektet.

kierch >> spørgsmålet er vel om du er ved at adaptere noget gammel kode til at bruge MFC's databaseklasser eller om det rent faktisk er nyudvikling..?

I sidste tilfælde kunne du overveje at bruge et CTime objekt, til at indeholde datoen, i din kode og helt skippe char-array'et...
Avatar billede kierch Nybegynder
22. august 2003 - 14:49 #12
Der er tale om noget gammelt kode som skal interface til en database.
Avatar billede kierch Nybegynder
22. august 2003 - 15:08 #13
Hej JPK din komentar fra 13:47 virker når year rettes til eks 2003 ikke 03

Kom med det som svar så får du point
Avatar billede jpk Nybegynder
22. august 2003 - 15:12 #14
Nå ja, selvfølgelig...
Avatar billede kierch Nybegynder
01. september 2003 - 08:11 #15
Hej jeg har været på ferie derfor den sene accept.
Avatar billede jpk Nybegynder
01. september 2003 - 08:57 #16
np...
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