Number Conversion

Sonnyboy

New member
Local time
Today, 10:34
Joined
Sep 13, 2007
Messages
9
I am using Access 2002.

I have a number, 35.1519519, that I want to convert to degrees, minutes, and seconds. I know how to do this manually, but I wonder if there is a formula or a simple VBA script that will do it for me. I have a table that the number is in, and I will create the necessary fields in the table for deg, min, sec. Then I would use the formula in a form to divide the number into the necessary parts (I think).

Has anyone done this before?

Thanks for your help
 
No, I'm not trying to be funny, but I did find a Java function that would do it, and thought you might be able to follow it well enough to translate it into VBA.
Code:
function roundDecimal(nNumber) {
 var tenToPower;
 var nDecimals = 6;
 var newNumber;
 var numPad = 0;
 var curDecimal;
 var locDecimal;
 var i;

// round the number
 tenToPower = Math.pow(10, nDecimals);
 newNumber = String(Math.round(nNumber * tenToPower) /
tenToPower);

 if (nDecimals > 0) {
   // see if we need to pad with 0's
   locDecimal = newNumber.indexOf(".");
   if (locDecimal == -1) {
     // no decimal at all
     newNumber += ".";
     numPad = nDecimals
   } else {
     // how much padding do we need?
     curDecimal = (newNumber.length - locDecimal) - 1;
     if (curDecimal < nDecimals) {
      numPad = nDecimals - curDecimal;
     }
   }
   // pad the end with 0's
   for (i = 0; i < numPad; i++) {
    newNumber += "0";               
    }
 }
 return String(newNumber);
}

function getlat(latdms) {
  var dmsArray = latdms.split(" ");
  var numElements = dmsArray.length;
  var nsew;

  nsew = dmsArray[0];
  //See if N or S was entered
  if (nsew=="N" || nsew=="S") {
     d = dmsArray[1];
     m = dmsArray[2];
     s = dmsArray[3];
    dd = eval(d + "+" + m/60 + "+" + s/(60*60));
    dd = roundDecimal(dd);
    if (nsew == "S") {
      dd = "-" + dd;
    } else {
      dd = "+" + dd;
    }
  } else {
     d = dmsArray[0];
     m = dmsArray[1];
     s = dmsArray[2];
alert(d + " " + m + " " + s);
    dd = eval(d + "+" + m/60 + "+" + s/(60*60));
    dd = roundDecimal(dd)
  }
  document.convll.latdec.value = dd;
}

function getlon(londms) {
  var dmsArray = londms.split(" ");
  var numElements = dmsArray.length;
  var nsew;

  nsew = dmsArray[0];
  //See if E or W was entered
  if (nsew=="E" || nsew=="W") {
     d = dmsArray[1];
     m = dmsArray[2];
     s = dmsArray[3];
    dd = eval(d + "+" + m/60 + "+" + s/(60*60));
    dd = roundDecimal(dd);
    if (nsew == "W") {
      dd = "-" + dd;
    } else {
      dd = "+" + dd;
    }
    } else {
     d = dmsArray[0];
     m = dmsArray[1];
     s = dmsArray[2];
    dd = eval(d + "+" + m/60 + "+" + s/(60*60));
    dd = roundDecimal(dd)
  }
  document.convll.londec.value = dd;
}
 
access appears to have functions ready mapped for radians. can't you convert your number to radians and use that. I know its not quite the same, but it will let you use loads of intrinsic maths functions
 

Users who are viewing this thread

Back
Top Bottom