ПРЕДСТАВЛЕНИЕ базы данных не отражает данные в underying ТАБЛИЦЕ

вам нужно дождаться загрузки шрифтов. Вы можете сделать что-то вроде этого

import React from "react";
import { StatusBar } from "react-native";
import { Container, Button, text, ListItem, Text } from "native-base";
import Expo from "expo";

export default class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = { loading: true };
  }

  async componentWillMount() {
    await Expo.Font.loadAsync({
      Roboto: require("native-base/Fonts/Roboto.ttf"),
      Roboto_medium: require("native-base/Fonts/Roboto_medium.ttf"),
      Ionicons: require("@expo/vector-icons/fonts/Ionicons.ttf"),
    });
    this.setState({ loading: false });
  }

  render() {
    if (this.state.loading) {
      return <Expo.AppLoading />;
    }
    return (
      <Container>
        <StatusBar hidden={true} />

        <Button>
          <Text>Button</Text>
        </Button>

        <ListItem />
      </Container>
    );
  }
}
9
задан casperOne 29 April 2012 в 15:06
поделиться

6 ответов

Да, вроде того.

Возможные причины:

  1. Вид необходимо обновить или перекомпилировать. Случается, когда определения исходных столбцов меняются и в представлении (или чем-то еще, от чего зависит) используется "*", может быть неприятно. Вызовите процедуру sp_RefreshView. Также может произойти из-за вызываемых представлений или функций (источников данных).

  2. Представление смотрит на что-то отличное от того, что они / вы думаете. Они смотрят не на ту таблицу или представление.

  3. Представление неожиданным образом преобразует данные. Это работает правильно, совсем не так, как они ожидали.

  4. Представление возвращает другое подмножество данных, чем ожидалось. Опять же, это работает правильно, совсем не так, как они думают.

  5. Они смотрят не на ту базу данных или с идентификатором входа / пользователя, который заставляет представление изменять то, что оно показывает.

21
ответ дан 4 December 2019 в 06:30
поделиться

Наверняка есть и другие вещи:

1) Derived attributes are pulling from wrong tables in the view
2) The view is using incorrect tables
3) incorrect or missing joins in the view

и многие другие

0
ответ дан 4 December 2019 в 06:30
поделиться

это возможно, если базовая таблица была изменена и процедура sp_refreshview не была запущена для представления, поэтому в представлении будут отсутствовать столбцы. если они были добавлены в таблицу.

Чтобы понять, что я имею в виду, прочитайте , как с помощью процедуры sp_refreshview

10
ответ дан 4 December 2019 в 06:30
поделиться

Предполагая, что представление на самом деле не преобразовывает данные, технически это возможно в случае повреждения. Просмотр извлекает данные из одного индекса, «таблица» извлекает данные из другого (т. Е. Из кластеризованного), и эти два индекса не синхронизированы. DBCC CHECKDB должна выявить проблему.

Но человеческая ошибка гораздо более вероятна, т.е. они смотрят на другую таблицу, чем на представление, или на другие записи.

1
ответ дан 4 December 2019 в 06:30
поделиться

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

Другая возможность, которую пользователи, похоже, не понимают, - это то, что данные текучие. Данные, которые вы читаете в 3:00 в представлении, могут отличаться от данных, которые вы видите в 3:30, глядя прямо на таблицу, поскольку за это время произошли изменения.

3
ответ дан 4 December 2019 в 06:30
поделиться

Несколько возможностей:

  • Ваше .NET-приложение может не указывать туда, куда вы или они думаете, что оно указывает. Например, он по ошибке указал на тестовый сервер

  • . Если в представлении есть индекс в виде числа с плавающей запятой или числового значения, значение может отличаться от базового запроса из-за округления

  • Параметр ANSI_NULLS специфичен для представления когда он был создан. Если он отличается от настройки во время выбора (ов) в базовых таблицах, это может вызвать расхождения для определенных типов запросов

  • Базовые структуры таблиц были изменены, а представление не было обновлено (особенно проблема, если он использует " SELECT * ")

Я отредактирую этот пост, если вспомню о других.

РЕДАКТИРОВАТЬ: Вот пример того, как параметр ANSI_NULLS может отбросить ваши результаты:

SET ANSI_NULLS ON

DECLARE
     @i     INT,
     @j     INT

SET @i = NULL
SET @j = 1

SELECT
     CASE WHEN @i <> @j THEN 'Not Equal' ELSE 'Equal' END

SET ANSI_NULLS OFF

SELECT
     CASE WHEN @i <> @j THEN 'Not Equal' ELSE 'Equal' END

Вы должны получить следующие результаты:

Equal

Not Equal
2
ответ дан 4 December 2019 в 06:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: