Цитата:
в этой таблице они и не нужны, я всегда могу округлить, или изменить структуру таблицы. но float и double дают еще более плачевный эффект. "CREATE TABLE IF NOT EXISTS operations (" + "ops_id int not null auto_increment, primary key(ops_id)," + "voyages_id int," + "vessels_id int," + "date datetime,"+ "till datetime," + "time_spent decimal (10,4)," + "ops_type varchar(15)," + "location varchar(50)," + "bunk_rob decimal (10,4)," + "bunk_rob_onsail decimal (10,4)," + "lo_rob decimal (10,4)," + "lo_rob_onsail decimal (10,4)," + "fw_rob decimal (10,4)," + "mileage decimal (10,4)," + "eta datetime,"+ "da decimal (10,4)," + "ctm decimal (10,4)," + "repair_exp decimal (10,4)," + "bunk_supply decimal (10,4)," + "fw_supply decimal (10,4)," + "lo_supply decimal (10,4)," + "bunk_price decimal (10,4)," + "fw_price decimal (10,4)," + "lo_price decimal (10,4)," + "var_exp decimal (10,4)," + "var_exp_comm text," + "comment text," + "frt_received decimal (10,4)," + "brokerage decimal (10,4)," + "demurrage decimal (10,4)," + "dispatch decimal (10,4)" + ") ENGINE=INNODB;"; +++++++++++++++++ private void updateOpsTable() { DialogResult result = MessageBox.Show("Save changes?", "saving...", MessageBoxButtons.YesNo); if (result == System.Windows.Forms.DialogResult.No) return; this.opsDgv.BeginEdit(true); this.opsDgv.BeginEdit(false); this.opsDgv.EndEdit(); // Synchronizing with textbox data DataTable changesOps = dataOps.GetChanges(); if (changesOps == null) return; // no changes = no update foreach (DataRow dr in changesOps.Rows) { if (dr.RowState.ToString().Equals("Deleted") ) continue; dr[1] = selectedVoyageIndex; dr[2] = selectedVesselIndex; } try { daOps.Update (changesOps); dataOps.AcceptChanges(); // вот здесь все останавливается } catch (DBConcurrencyException err) { MessageBox.Show(err.Message); } //populateOperationsTable(); } |
С ходу нужно изменить -
if (dr.RowState.ToString().Equals("Deleted") ) continue; на if (dr.RowState == DataRowState.Deleted) continue; А то это уж как-то сильно уж..... :) Это ж enum, тобишь int, а конвертить его в строку, чтобы сравнить с другой строкой это жестоко 6) Почесав затылок, юзер дописал через 7 минут А как описан daOps - который походу DataAdapter? В коде или в дизайнере? У MySqlDataAdapter должно быть свойство - UpdateCommand, можешь его содержимое тоже запостить сюда? |
Цитата:
без cbOps.ConflictOption = ConflictOption.OverwriteChanges; генерится команда, в которой все данные в базе сверяются с данными таблицы. на этой проверке и происходит облом, так как (как оказалось): decimal c# != decimal MySql. (не всегда, но часто, зависит от числа знаков после запятой. именно поэтому все работало до того самого момента, пока я вчера не дописал вычислительную часть и не попытался записать результаты в базу). если установить флаг: cbOps.ConflictOption = ConflictOption.OverwriteChanges; то генерируется более простой команд. set, values, where. и, соответственно, все отлично апдейтится. я так понял, что эта проблема уже очень старая и в баглисте MySQL она уже много лет. |
таки что у тебя за движок таблиц мускула isam или innodb?
|
Цитата:
Цитата:
---------- |
торможу однако
|
а по ходу основная-то работа сделана :) осталось только оптимизировать алгоритм поиска расстояний между портами и всем текстбоксам повесить проверки на Leave чтоб не вводили чепуху типа "1234567,1234567".
|
У заказчика аппетиты растут одновременно с моим исполнением. теперь вот надо все счета по портовым сборам отследить, где пришли по почте финальные документы и был ли оплачен баланс + плюс время простоя надо разбить на 5 категорий (команда проебала, погода плохая, ожидания лоцмана в проливе и т.д.)
|
Все-таки поставил себе полную версию VS 2010 (не Express). Поэкспериментировал с dotConnect от Devart. Все красиво, никаких фокусов с параллелизмом, даже если с плавающей точкой работать. Теперь вот думаю, стоит ли все переписывать...
накой я вообще с этим Экспрессом связывался. столько бы гемора избежал сразу. |
Мне никогда не приходилось использовать Express варианты :)
А насчет переписать, если потом прийдется это все поддерживать и доделывать дальше, то проще переписать, тем более что сейчас работы с базой насколько я понял не очень много. |
Цитата:
Кстати, как говорится, все, что не делается - все к лучшему. Мучаясь с экспресс версией я хоть разобрался, как это все работает. |
Цитата:
|
"Рефакторинг"/переписывание дело нужное и полезное (если время позволяет), главное с фичами не переборщить :).
Хуича — негодная, ненужная фича. Охуича — восхитительная, инновационная фича. |
тут вот назрела идея некоторые фичи моей программы сделать доступными в качестве вэб приложения.
Так вот, если при разработке клиента преимущества .net были очевидны, особенно в плане работы с базами данных. А вот в серверной части, я так понял, не все однозначно. После недели беглого ознакомления с ASP.NET и Java EE, не нашел вообще никаких преимуществ у ASP.NET... видимо придется обращаться к истокам. может я чего недопонял? |
Цитата:
Почесав затылок, юзер дописал через 2 минуты ASP.Net WebForm включает в себя довольно много разных готовых контролов, и MS пошла путём облегчение их использования. В простом варианте все сводиться - кинуть на страницу контролы, настроить взаимодейсвие, и все. На практике способ не удобных, и всеравно лучше писать их самому в разметке, так как студийный дизайнер довольно извращённый. Либо Asp.Net MVC. Он более современен, и более изящен, но стандартных контролов под него меньше, так как он более web friendly чтоли. Засчет этого, на нём намного проще использовать jQuery UI, и остальные JS контролы. Почесав затылок, юзер дописал через 30 секунд Я использовал Java Wicket, и могу сказать, что разница между ним и WebForm-ами не на столько разительная. Общие идеи схожи. |
Цитата:
а хост для ASP.NET должен быть только на винде? там по умолчанию IIS 7.5 используется, есть ли AS под линукс? для явы тут глаза разбегаются - JBOSS, TomCat, GlassFish и иже с ними. |
Java EE, тобишь enterprise, насколько я понимаю к вебу имеет отношение далёкое. И если уже рассматривать Java, то нужно смотреть на Spring\Wicket\JSF\etc
Почесав затылок, юзер дописал через 4 минуты Цитата:
Под Mono, насколько я помню работает ASP.Net 4.0, и MVC 3.0, но нужно бы перепроверить. |
я объясню причину, по которой интересуюсь - когда я начинал этот проект я взялся за Яву, но потом уж очень много времени уходило на возню с интерфейсом. Поэтому, я ради интереса, попробовал VS2010+C#. за неделю разобрался со спецификой платформы и потом быстро все написал. как в известном мультфильме - "лучше день потерять, но потом за 5 минут долететь".
теперь вот стою перед выбором ASP.NET MVC3 vs SpringMVC3+Hibernate. |
Цитата:
Да, EntityFramework под Mono вроде не работает. LinqToSql - работает. С таким же успехом можно смотреть на связку Asp.Net MVC3 + nHibernate. Связка вполне нормальная, я как-то использовал подобное. Но если нужно всетаки нужно будет хоститься на Linux-е под Apache+Mono, то лучше сразу погуглить на эту тему, насколько это все работоспособно, так как я на своей практике с подобным не сталкивался. Почесав затылок, юзер дописал через 1 минуту А если хостинг не проблема, то на чем писать, это наверно уже дело вкуса. |
Цитата:
да и большой сложности не планируется, все равно такой удобной работы с таблицами, какую дажет DataGridView в вэб приложении не добиться. (хотя может я в вэб разработке пока мало разбираюсь, так что могу и ошибаться) |
Цитата:
В MVC грида нет, и нужно его искать, для примера - jqGrid WebForm-ы со старта обычно проще, так как они близки к WinForm-ам, но при этом это их основной недостаток. |
вроде нарыл неплохой туториал по Spring MVC 3. сегодня-завтра напишу простейший пример. Сравню ощущения с ASP.NET потом отпишусь.
подсознательно понимаю, что с ASP.NET будет проще, хотя бы из-за большого количества примеров и обучающих видео. Но чего-то вот хочется дать шанс яве. |
Опять же незнаю насчет спринга, но насколько я знаю Wicket плавно набирает популярность, и может имеет смысл глянуть и на него вместо спринга
|
Цитата:
поиск по Wicket тоже дал результат. скачал примеры - буду пробовать. еще раз спасибо за наводку. |
spring базовый, общий, универсальный, в конце концов просто раньше появился
java хороша как конструктор (с учетом наработанного уже материала), архитекторам раздолье можно много чего интересного собрать, главное не перемудрить викет это вэб, а спринг может быть использован где угодно, кроме того можно использовать только нужные части этого фреймворка настоятельно рекомендую прежде чем использовать спринг и прочее, набросать что то простяцкое используя стандартный механизм (jsp, сервлеты), очень поможет потом и спринг оценить по достоинству и викет родитель у них кстати один и тот же Apache и есть форк спринга под нет |
Цитата:
|
ежели пробовал, то спринг и хибернейт в связке напрашиваются в следующий хелло ворлд
|
Цитата:
<%@ page import="java.sql.*" %><%@ page import="java.io.*" %> <%@ page import="com.mysql.*" %> <? xml version="1.0"?> <capital_shipping> <% Connection con = null; Statement stmt = null; ResultSet rs = null; try{ Class.forName("com.mysql.jdbc.Driver").newInstance (); con=DriverManager.getConnection("jdbc:mysql://192.168.1.7:3306/capital_shipping", "root", "12345"); out.println("Connected to database!!!"); stmt = con.createStatement(); String query = "SELECT * FROM vessels;"; rs = stmt.executeQuery(query); while (rs.next()){ %> и т.д. и т.п. |
теперь осталось сделать всё правильно :), вынести логику из jsp и тем самым соблюсти парадигму MVC :)
ну типа так кошерней будет |
ох как я обожаю эти новомодные паттерны и парадигмы
|
Время на сервере: 08:34. |
vBulletin 3, Copyright © 2000-2024, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co