2010-10-07 5 views
2

Привет всем, мне удалось в полной мере интегрировать мою базу данных с Excel в конце, но в конце после того, как я показал ее боссам, они попросили меня снова разработать формы и отчеты в Access. Это не слишком долго, к счастью, поэтому я закончил делать два передних конца для одной базы данных Back End. Но в итоге это будет полностью доступная база данных с использованием только одного бита интеграции Excel; в основном метод переноса электронных таблиц для переноса ежедневного конца торгов. Цена акций в Access.Доступ к форматированию VBA

Теперь я пришел к точке, где база данных находится в значительной степени готова разделить и заселены. (Что это лучший способ для решения этого, заполнить первый или разделить первый?)

на вопрос Я просьба ниже:

Это может показаться довольно простым вопросом, но до сих пор мне не помогли с Google или, возможно, я не использую правильные ключевые слова в моем поиске, поэтому я подумал, что лучше сказать, тогда Здесь; Есть ли способ форматировать числа, которые сгенерированы через некоторый код VBA и помещены в новую таблицу в Access, чтобы они выглядели так:

Итак, если это 1,000,000, то это будет выглядеть как 1m . Или если это 10 000, тогда это выглядит как 10k так в основном, если у него есть три 0 ', то это K Если у него есть шесть 0', то это М

Я использовал некоторые VBA первоначально для форматирования чисел следующим образом:

ChangeInShare = Format(ChangeInShare, "#,##.00") 

Но тогда запрос пришел, чтобы сократить некоторые цифры до ma ke отчеты выглядят аккуратно.

Заключительная таблица принимает значения в текстовом формате кстати.

Спасибо

ответ

3

Вы можете использовать оператор по модулю, чтобы проверить, если число делимое на 1000000. или 1000, а затем заменить последние нули.

Может быть, эта функция указывает вам на правильном направлении:

Public Function fmt(val As Long) As String 
    Dim result As String 
    If val Mod 1000000 = 0 Then 
    result = (val \ 1000000) & "M" 
    ElseIf val Mod 1000 = 0 Then 
    result = (val \ 1000) & "K" 
    Else 
    result = val 
    End If 
    fmt = result 
End Function 

Тогда некоторые тестовые вызовы:

? fmt(471000) 
471K 
? fmt(4711) 
4711 
? fmt(4000000) 
4M 
? fmt(40000) 
40K 
+1

Спасибо Vanje, попробуем это сейчас. – md85

2

Hi Muffi D
дополнительно к vanjes приемлемый очень хороший ответ есть еще одна идея: как насчет научных обозначений?

Debug.Print FStr(10) 
Debug.Print FStr(2000) 
Debug.Print FStr(300000) 
Debug.Print FStr(40000000) 
Debug.Print FStr(5000000000#) 
Debug.Print FStr(12) 
Debug.Print FStr(2345) 
Debug.Print FStr(345678) 
Debug.Print FStr(45678901) 
Debug.Print FStr(56789#) 

Function FStr(ByVal d As Double) As String 
    FStr = Format(d, "0.####E+0") 
End Function 

, то вы получите:

1,0E+1 
2,000E+3 
3,E+5 
4,E+7 
5,E+9 
1,2E+1 
2,345E+3 
3,4568E+5 
4,5679E+7 
5,6789E+9 

, если вам нужно для двойников (или валюты) вы можете пойти с vanjes ответить, но использовать MODF-функцию вместо:

Function ModF(ByVal value As Double, _ 
       ByVal div As Double) As Double 
    ModF = value - (Int(value/div) * div) 
End Function 

Function fmtF(ByVal value As Double) As String 
    Dim result As String 
    If ModF(value, 1000000000) = 0 Then 
    result = (value/1000000000) & "G" 
    ElseIf ModF(value, 1000000) = 0 Then 
    result = (value/1000000) & "M" 
    ElseIf ModF(value, 1000) = 0 Then 
    result = (value/1000) & "K" 
    Else 
    result = value 
    End If 
    fmtF = result 
End Function 

приветы К сожалению

+0

Это также отличный ответ, но я забыл указать в своем сообщении ранее, что База данных должна использоваться для составления финансовых отчетов, предназначенных для использования внутри страны или извне, и хотя в университете при изучении Инжиниринга это был бы предпочтительный метод , где я работаю, они хотят, чтобы это было презентабельно для их клиентов. Спасибо. Ой, конечно, хорошо знать об этом в любом случае. :) – md85

1

Вы можете разделить базу данных в любое время перед распространением n вашим пользователям, но я не знаю, что вы подразумеваете под словом «populate»."

Смотрите "Splitting your app into a front end and back end Tips" страницы для получения информации о расщеплении .. Смотрите бесплатный Auto FE Updater utility, чтобы распределение новой КЭ относительно безболезненно

+0

Эй, спасибо! Когда я сказал Populate, я хотел заполнить определенные таблицы, в которых нельзя заполнить непосредственно через форму. Это связано с тем, что в этих таблицах хранятся данные Исторического фондового рынка, а также исторические данные валютного курса; они будут обновляться через форму, но когда начальные данные поступают, они поступают непосредственно в таблицы через электронную таблицу Excel из-за количества фактических данных, которые происходят. – md85

0

Мне был также интересны,. У меня есть CurrencyCode, который определяет любой тип валюты компании В настоящее время все вычисления в VBA уже сделаны. Я хотел знать, есть ли способ написать инструкцию SQL, например, если CurrencyCode = GBP, тогда результирующее поле отображается как 23 м вместо 23 м и т. д. для всех разные валюты, которые есть в поле.

Это опять же необходимо жестко закодировать прямо сейчас, единственное, если в будущем, если я не буду с компанией, кто-то должен добавить компанию, у которой нет кода для этого; то с какими будут способы борьбы? Должны ли они иметь кого-то, кто должен знать о том, как использовать SQL или VBA и иметь возможность изменять; для этого я бы предпочел сделать это в SQL, если это возможно, потому что тогда я мог бы поместить это в руководство для базы данных, а SQL гораздо менее сложно использовать, чем VBA для начинающих.

Результирующие значения должны быть в одном столбце, поэтому все разные IF и Wheres должны быть частью одного и того же оператора SQL, это из-за отчетов, которые существуют, которые используют один столбец для разных компаний с разными валютами.

Спасибо!

+0

Вам может потребоваться изменить формат валюты поле для отображения британского фунта. И у вас есть рассчитанное поле в запросе, которое преобразует вашу базовую валюту в валюту, которую вы хотите отобразить. –

Смежные вопросы