Deze programmering levert een voorbeeldmodule waarmee u "in URL" opgeslagen afbeeldingen (in een veld van het tekentype) kunt ophalen en laden in de SQL-database (in een veld van het afbeeldingstype) voor alle artikels.
Deze module wordt geopend via een knop die aan de artikelfiche wordt toegevoegd.
Als er een filter wordt toegepast, wordt daarmee rekening gehouden.
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using MercatorApi;
using MercatorController;
using System.IO;
using MercatorUi;
using System.Windows.Forms;
using System.Drawing;
namespace MercatorUi.MovableControls.ButtonsCodes
{
public static class Script
{
public static void Exec(MovableButton clickedButton)
{
Forms.Sig.SigForm sigForm = (Forms.Sig.SigForm)clickedButton.Form;
string reqSql = "select s_id,s_image from STOCK where (s_image<>'')";
if (!string.IsNullOrWhiteSpace(sigForm.Filter))
reqSql += " and (" + sigForm.Filter + ")";
List<(string s_id, string s_image)> list = Api.Zselect<(string s_id, string s_image)>(Globals.RepData, reqSql);
if (list != null)
{
using (MercatorSqlConnection conn = new MercatorSqlConnection(Globals.RepData, true))
{
if (conn.Connection == null)
return;
Progress.ProgressCreate(list.Count);
int i = 0;
bool err = false;
using (SqlCommand cmd = new SqlCommand("update STOCK set s_imagebin=@img where s_id=@s_id", conn.Connection))
{
foreach ((string s_id, string s_image) tuple in list)
{
i++;
Progress.ProgressIncrement(1);
Wait.WaitStatic.WaitWindow("Update Afbeeldingen : " + i + " / " + list.Count);
string imagePath = Globals.RepData + "IMAGES\\" + tuple.s_image;
if (File.Exists(imagePath))
{
cmd.Parameters.Clear();
cmd.Parameters.Add(new SqlParameter("@img", SqlDbType.Image)).Value = File.ReadAllBytes(imagePath);
cmd.Parameters.Add(new SqlParameter("@s_id", SqlDbType.Char)).Value = tuple.s_id;
if (!Api.SqlExec(Globals.RepData, cmd))
{
err = true;
break;
}
}
}
}
Progress.ProgressDestroy();
Wait.WaitStatic.WaitClear();
if (!err)
Dialogs.Stop("OK !");
}
}
}
}
}