Avatar billede whitewine Nybegynder
08. december 2009 - 02:46 Der er 9 kommentarer og
1 løsning

getdate fra access database og sammenligne den med dagens dato!!!

hej gutter
skal skrive en kode der trækker datoen fra access og sammenligne den med dagens dato, og hvis datoen er > 90 " svar til 3 måneder" skal teksten i textbox vises rødt ellers sort!! er der nogen der ved hvordan jeg kan komme i gang, på forhånd tak
Avatar billede Slettet bruger
08. december 2009 - 05:54 #1
Datoen er heltalsdelen af den måde et tidspunkt er repræsenteret på:

print clng(now())-clng(cdate("1/12-2009"))
7

Tekstboksens forgrundsfarve har egenskabsnavnet ForeColor

Farverne er 24bit  - BBGGRR - det bliver lige 255 til ren rød.

Farven kan tildeles, udløst af formularens eller raportens 'vedÅbning' eller 'vedAktuel' event.
Avatar billede whitewine Nybegynder
08. december 2009 - 10:30 #2
tak for dit svar, kan jeg få dig til at uddybde det lidt mere specifik. specielt med hensyn til tiden. Det skal siges at jeg samler alt data fra access vha oledbreader og der få jeg også fat på tiden.
Avatar billede terry Ekspert
08. december 2009 - 11:49 #3
You can also use the DateDiff function althiough the result is the same.

DateDiff("d", "1/12-2009", Now())

You can also Conditional formatting to set the colour of the text box.

http://office.microsoft.com/en-us/access/HA102081331033.aspx
Avatar billede terry Ekspert
08. december 2009 - 11:52 #4
But I am guessing that your NOT using Access as the frontend, so the code will be specific to the language (C#?) which you are using.
Avatar billede whitewine Nybegynder
08. december 2009 - 16:48 #5
hi terry and thx for your response. i am not sure what you mean by saying " using access as the fronend". I am using visual studio 2008 i combination with access 2007. date in access should be compare with actual date. time is not relevant in my case.

DateTime dateOne;
DateTime dateTwo;
DateTime nutiden = new DateTime();

if (ApparatId == 1)
{
  try
  {
    textBoxTransducer1.Text = string.Empty;
    textBoxTransducer2.Text = string.Empty;
    textBoxKalibreringsFaktor1.Text = string.Empty;
    textBoxKalibreringsFaktor2.Text = string.Empty;

    OleDbConnection aConnection = new OleDbConnection(ConfigurationManager.ConnectionStrings["Konsolidering.Properties.Settings.KonsolideringConnectionString"].ToString());
                   
      aConnection.Open();
      OleDbCommand aCommand = new OleDbCommand(" SELECT Kalibrering.[Kalibreringsfaktor 11], Kalibrering.[Kalibreringsdato 11], " +
                                                          " Kalibrering.[Kalibreringsdato 12], Kalibrering.[Kalibreringsfaktor 12]," +
                                                          " Transducer.[Transducer 11], Transducer.[Transducer 12] "+
                                                          " FROM Transducer INNER JOIN Kalibrering ON Transducer.[Transducer ID] = Kalibrering.[Transducer ID]", aConnection);
             
                                       
  OleDbDataReader dr = aCommand.ExecuteReader();
  while (dr.Read())
  {
  dateOne = Convert.ToDateTime( dr["Kalibreringsdato 11"].ToString());
  TimeSpan span = nutiden.Subtract(dateOne);                     
// her should be the code for compare and change text change color for textbox

best regards whitewine
Avatar billede terry Ekspert
08. december 2009 - 18:08 #6
"using access as the fronend"


Using Access to make the user forms etc. Access isnt just a database, it can be used to make a complete system.

And as I guessed your NOT using Access but (I think) C#. So to be honnest I think you have a better chance getting an answer in that category.
Avatar billede Slettet bruger
08. december 2009 - 20:46 #7
Som dialogen har udviklet sig, kan jeg se det slet ikke er et access appliaktion spørgsmål, så mit svar i #1 var forkert. Jeg vil tro at det eneste du møder som man måske kan kalde access database specifikt er sql syntaksen. Dit spørgsmål: 'trække datoen fra access' - var altså et bud på sql forespørsel der giver omtalte antal dage.
Det aner jeg ikke hvordan man gør - alle de vba funktioner man kan benytte (f.eks. datediff), virker måske ikke, når access databasen ikke kaldes fra en access applikation. Jeg ved at det IKKE virker når databasen kaldes fra ado (som ser ud til også at have lidt med  odbc at gøre)

http://en.wikipedia.org/wiki/Microsoft_Data_Access_Components

Men prøv, og meld tilbage hertil - det kunne da være sjovt at vide om man kan benytte vba i forespørsler der kommer fra oledb.

Mysql har myriader funktioner til den slags, sad jeg med problemet ville jeg kaste et par minutter efter mysql syntaksen og bruge den til google: 'ms-access oledb ????'

Ellers må du nøjes med en c# funktion.
Avatar billede whitewine Nybegynder
09. december 2009 - 13:21 #8
så lykkes det at last !!

vha denne finder jeg ud af om datoen er < eller > end 90, svarende til næsten 3 måneder.
Indputet får jeg fra access via SELECT command og læses i vs, vha en OleDbDataReader. farven kan jeg få skifte med

textbox.backColor = Color.red // skiftet til rød


private static bool compareDato(string dataBaseDato)
        {
         
            DateTime nutid = DateTime.Now;
            DateTime dato;
            dato = Convert.ToDateTime(dataBaseDato);
            TimeSpan span = nutid - dato;
            if (span.Days > 90)
                return true;
            else
                return false;
           
        }

// takker alle sammen i denne omgang. håber denne kan bruges
Avatar billede Slettet bruger
10. december 2009 - 01:00 #9
Var det bare det, du skulle have lidt extern fokus for at lave en c# funktion - intet om access databaser?

1. Funktionsnavn for upræsist og lidt grimt at blande engelsk og dansk: forslag is90DaysOld(dateStr).

2. Mellemresultater dannes når de skal anvendes 2 eller flere gange - nu aner jeg ikke hvor tungt c# - om man kan:


private static bool is90DaysOld(string dataBaseDato)
{
    if ((DateTime.Now - Convert.ToDateTime(dataBaseDato)).Days > 90)
        return true;
    return false;
 
}


Nuvel - du kan lukke spørgsmålet ved at give dig selv de 30 point.
Avatar billede whitewine Nybegynder
10. december 2009 - 08:34 #10
det er også rigtigt, tak ellebe :-)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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