CefSharp WpfControl и рендеринг в изображение

Вы не можете поместить динамический оператор в инструкцию PIVOT IN без использования PIVOT XML, который выводит несколько меньше желаемого результата. Тем не менее, вы можете создать строку IN и ввести ее в свой оператор.

Во-первых, вот моя таблица образцов;

  myNumber    myValue myLetter
---------- ---------- --------
         1          2 A        
         1          4 B        
         2          6 C        
         2          8 A        
         2         10 B        
         3         12 C        
         3         14 A      

Сначала настройте строку для использования в инструкции IN , Здесь вы помещаете строку в строку «str_in_statement». Мы используем COLUMN NEW_VALUE и LISTAGG для настройки строки.

clear columns
COLUMN temp_in_statement new_value str_in_statement
SELECT DISTINCT 
    LISTAGG('''' || myLetter || ''' AS ' || myLetter,',')
        WITHIN GROUP (ORDER BY myLetter) AS temp_in_statement 
    FROM (SELECT DISTINCT myLetter FROM myTable);

Ваша строка будет выглядеть так:

'A' AS A,'B' AS B,'C' AS C

Теперь используйте оператор String в вашем запросе PIVOT.

SELECT * FROM 
    (SELECT myNumber, myLetter, myValue FROM myTable)
    PIVOT (Sum(myValue) AS val FOR myLetter IN (&str_in_statement));

Вот вывод:

  MYNUMBER      A_VAL      B_VAL      C_VAL
---------- ---------- ---------- ----------
         1          2          4            
         2          8         10          6 
         3         14                    12 

Однако существуют ограничения. Вы можете конкатенировать строку до 4000 байт.

0
задан James Westgate 17 January 2019 в 09:30
поделиться

1 ответ

Спасибо, amatiland, он действительно работает с методом или событием OnPaint.

    public MainWindow()
    {
        InitializeComponent();

        Browser.Paint += Browser_Paint;
    }

    void Browser_Paint(object sender, CefSharp.Wpf.PaintEventArgs e)
    {
        Bitmap newBitmap = new Bitmap(e.Width, e.Height, 4 * e.Width, System.Drawing.Imaging.PixelFormat.Format32bppRgb, e.Buffer);

        var aPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "TestImageCefSharpQuant.png");
        newBitmap.Save(aPath);
    }

XAML

    <wpf:ChromiumWebBrowser x:Name="Browser" Address="www.google.com"></wpf:ChromiumWebBrowser>
0
ответ дан Simon 17 January 2019 в 09:30
поделиться
Другие вопросы по тегам:

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